绑定到占位符的方式遵循了参数化查询的原则,将参数值与SQL语句逻辑分开,并通过SQL解析过程严格对待参数值,从而有效地防止SQL注入问题。
为什么占位符可以防止sql注入? 先看下面用占位符来查询的一句话 String sql = "select * from administrator where adminname=?"; psm = con.prepareStatement(sql); String s_name ="zhangsan' or '1'='1"; psm.setString(1, s_name); 假设数据库表中并没有zhangsan这个用户名, 用plsql运行sql语句,可...
所以转义后的sql为'zhangsan\' or \'1\'=\'1';这个时候是查不出来的。