1.如果没有使用PreparedStatement预处理 sql语句注入之后为:
select * from user where username = 'monkey' and password = '123456' or '1' = '1';
该用户密码直接导致sql语句查询的时候跳过密码验证,
2.如果使用了接口PreparedStatement进行预处理 sql语句注入之后为:
select * from user where username = 'monkey' and password = '123456\' or \'1\' = \'1';
两者的区别就在于:用户输入的所有字符,均会通过\(转义字符)转换成普通文本,让特殊符号失去其特殊含义,从而保证放进password中的值只是字符串.