我们使用如下查询:
FROM users u INNER JOIN FETCH u.roles where u.password='" + password + "'" + " AND u.username='" + username + "'";
为了防止 sql 注入,我们使用正则表达式过滤“用户名”,只允许白名单字符,例如“ ^[a-zA-Z0-9]*$ ”,对于“密码”字段,我们使用检查这样作为,
if(password.indexOf("'") != -1) { Sql injection attack }
攻击者有什么方法可以绕过我们用来成功发起 sql-injection 攻击的检查?
我们正在使用 MySql v5.1
谢谢,