Discuss / Java / 6.8 关于PreparedStatement解决sql注入的解释

6.8 关于PreparedStatement解决sql注入的解释

Topic source

ANGERIED

#1 Created at ... [Delete] [Delete and Lock User]
这个占位符很有意思,就是因为如此才能完美避免sql注入。
其实换一种说法,就是使用PreparedStatement的方式,它会自动帮我们进行“转义”功能。
假如 ? 的位置,你赋值参数是java的String字符串,那么接下来会帮你转成sql的varchar,如同 'xxxxx' 的形式,同时里面包含特殊的字符 ' ,也会帮你自动转义\'。

com.mysql.jdbc.JDBC42PreparedStatement@61dc03ce: SELECT * FROM user WHERE login='bob\' OR pass=' AND pass=' OR pass=\''

  • 1

Reply