猿问

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

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

我知道PreparedStatements避免/防止SQL注入。它是怎么做到的?使用PreparedStatement构建的最终表单查询是否为字符串?



凤凰求蛊
浏览 1748回答 3
3回答

芜湖不芜

SQL注入的问题是,用户输入被用作SQL语句的一部分。通过使用准备好的语句,您可以强制将用户输入作为参数的内容处理(而不是作为SQL命令的一部分)。但是,如果您不使用用户输入作为准备语句的参数,而是通过将字符串连接在一起来构建sql命令,则仍然容易受到SQL注入的影响。即使在使用预先准备的语句时。

牧羊人nacy

考虑做同一件事的两种方法: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; --然后在第一次,你会被冲洗。在第二阶段,你是安全的,小波比桌将在你的学校注册。
随时随地看视频慕课网APP

相关分类

Java
MySQL
我要回答