我在 Stack Overflow 上阅读了很多关于如何通过使用准备好的语句来防止 SQL 注入的文章
但是有没有办法在准备好的语句上进行 SQL 注入,或者它是 100% 安全的吗?
下面是我的java代码
String query = "SELECT * FROM Users WHERE username=? and password=?";
ps=con.prepareStatement(query);
ps.setString(1,username);
ps.setString(2,password);
rs = ps.executeQuery();
status = rs.next();
if(status==true){
.....
}else{
....
}
我尝试了一些sql注入查询,例如
一些输入:
SELECT * FROM users WHERE username = 'xxx@xxx.xxx' OR 1 = 1 LIMIT 1 -- ' ] AND password = md5('1234');
SELECT * FROM users WHERE email = 'xxx@xxx.xxx' AND password = md5('xxx') OR 1 = 1 -- ]');
我还尝试了更多查询,但由于(单引号)'被转义(/'),所有 SQL 注入查询似乎都不起作用。
如果有任何 SQL 注入查询/技术可用于在上述代码中进行 SQL 注入,请建议我。