预准备语句是否避免了 SQL 注入?
2022-09-01 03:06:27
我已经阅读并尝试将易受攻击的sql查询注入到我的应用程序中。它不够安全。我只是使用语句连接进行数据库验证和其他插入操作。
准备好的结单安全吗?此外,这种说法也会有问题吗?
我已经阅读并尝试将易受攻击的sql查询注入到我的应用程序中。它不够安全。我只是使用语句连接进行数据库验证和其他插入操作。
准备好的结单安全吗?此外,这种说法也会有问题吗?
使用字符串串联从任意输入构造查询将不安全。请看这个例子:PreparedStatement
preparedStatement = "SELECT * FROM users WHERE name = '" + userName + "';";
如果有人把
' or '1'='1
作为 ,您将容易受到SQL注入的攻击,因为该查询将在数据库上执行userName
PreparedStatement
SELECT * FROM users WHERE name = '' OR '1'='1';
因此,如果您使用
preparedStatement = "SELECT * FROM users WHERE name = ?";
preparedStatement.setString(1, userName);
你会很安全。
其中一些代码取自这篇维基百科文章。
如果使用得当,预准备语句可以防止 SQL 注入。但是,请为您的问题发布一个代码示例,以便我们了解您是否正确使用它。