尝试开始使用JDBC(使用Jetty + MySQL)。我不确定如何在SQL语句中转义用户提供的参数。例如:
String username = getDangerousValueFromUser();
Statement stmt = conn.createStatement();
stmt.execute("some statement where username = '" + username + "'"));
在使用声明之前,我们如何逃避“用户名”?
答案 0 :(得分:15)
例如:
con.prepareStatement("update Orders set pname = ? where Prod_Id = ?");
pstmt.setInt(2, 100);
pstmt.setString(1, "Bob");
pstmt.executeUpdate();
它将阻止原始SQL注入
如果要转义sql字符串,请检查StringEscapeUtils.escapeSql()
。请注意,此方法为deprecated in Commons Lang 3。
另见