为了账号安全,请及时绑定邮箱和手机立即绑定

PreparedStatement如何避免或防止SQL注入?

PreparedStatement如何避免或防止SQL注入?

凤凰求蛊 2019-06-28 10:42:12
PreparedStatement如何避免或防止SQL注入?我知道PreparedStatements避免/防止SQL注入。它是怎么做到的?使用PreparedStatement构建的最终表单查询是否为字符串?
查看完整描述

3 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

SQL注入的问题是,用户输入被用作SQL语句的一部分。通过使用准备好的语句,您可以强制将用户输入作为参数的内容处理(而不是作为SQL命令的一部分)。

但是,如果您不使用用户输入作为准备语句的参数,而是通过将字符串连接在一起来构建sql命令,则仍然容易受到SQL注入的影响。即使在使用预先准备的语句时。


查看完整回答
反对 回复 2019-06-28
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

考虑做同一件事的两种方法:

PreparedStatement stmt = conn.createStatement("INSERT INTO students VALUES('" + user + "')");stmt.execute();

PreparedStatement stmt = conn.prepareStatement("INSERT INTO student VALUES(?)");stmt.setString(1, user);stmt.execute();

如果“user”来自用户输入,而用户输入是

Robert'); DROP TABLE students; --

然后在第一次,你会被冲洗。在第二阶段,你是安全的,小波比桌将在你的学校注册。


查看完整回答
反对 回复 2019-06-28
  • 3 回答
  • 0 关注
  • 1747 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信