java w / o prep'd语句中的SQL安全字符串

时间:2012-03-24 11:44:56

标签: java sql

保留准备好的陈述,或者我想在java中从sql注入“保持安全”......

我想过这样做(htmlentity转换)?

suspectedInputvariable.replace("'","'")
                      .replace(";","ŧ")
                      .replace("\"",""");

suspInputvariable 现在可以安全地嵌入SQL查询吗?

2 个答案:

答案 0 :(得分:3)

首先,你为什么要做这样的事情?驱动程序知道如何安全地处理字符串。只需使用PreparedStatement

其次,你必须逃避\和其他一些角色。如果您处理此处列出的所有字符,则您的代码在MySQL中应该是相当安全的:http://dev.mysql.com/doc/refman/4.1/en/mysql-real-escape-string.html其他数据库的字符列表可能不同。

答案 1 :(得分:2)

  

怀疑输入变量现在可以安全地嵌入一个SQL查询吗?

可能不是。各种SQL方言中有各种鲜为人知的特性,可以用来绕过这个黑名单。

只需使用准备好的陈述。周期。