Java 转义字符串的标准库(无准备语句)
我正在搜索一个Java标准库,以便在SQL语句中使用字符串之前对其进行转义。这主要是为了防止错误和SQL注入。 不幸的是,我将无法像许多其他线程中建议的那样使用准备好的语句 有我可以使用的标准图书馆吗? 我在Apache Commons上看过Java 转义字符串的标准库(无准备语句),java,sql,stringescapeutils,Java,Sql,Stringescapeutils,我正在搜索一个Java标准库,以便在SQL语句中使用字符串之前对其进行转义。这主要是为了防止错误和SQL注入。 不幸的是,我将无法像许多其他线程中建议的那样使用准备好的语句 有我可以使用的标准图书馆吗? 我在Apache Commons上看过StringEscapeUtils,但我真的不知道这是否是最先进的 提前非常感谢 由于SQL注入安全问题,这是一个非常重要的问题。我将考虑使用SQL ./COD>类型参数,而不是逃避。例如,要搜索特定字符串,请执行以下操作: 而不是做: SELECT *
StringEscapeUtils
,但我真的不知道这是否是最先进的
提前非常感谢 由于SQL注入安全问题,这是一个非常重要的问题。我将考虑使用SQL <代码> ./COD>类型参数,而不是逃避。例如,要搜索特定字符串,请执行以下操作: 而不是做:
SELECT * FROM accounts
WHERE name = 'escapedstring1' AND password = 'escapedstring2'
我会使用:
SELECT * FROM accounts WHERE name = ? AND password = ?
然后需要将注入的字符串(无需任何转义)作为参数传递给SQL方法。给你。不确定这是否适用于你
比如:
String statement = "SELECT * FROM accounts WHERE name = ? AND password = ?";
try {
PreparedStatement stmt = databaseConnection.prepareStatement(updateString);
// notice that it is 1 based, not 0 (ick)
stmt.setString(1, name);
stmt.setString(2, password);
ResultSet results = stmt.executeQuery();
下面是我的ORM库如何使用
希望这有帮助。您可以使用Apache Commons,它是一个非常成熟的项目。Apache Commons是一个成熟的库。它可能有它的缺点,但是你很难找到一个更好的OSS Java库来满足你的需要。嗨,Victor,非常感谢你的想法。:)由于没有相反的评论,我想我将使用ApacheCommons(很快);)不要使用Apache Commons StringEscapeUtils.escapeSql(),因为它不能正确地转义sql以防止sql注入。它已经从第三版中删除了(据说是因为他们想阻止人们使用它,而不是安全的准备声明)。嗨,格雷,谢谢你的建议。我觉得这个不错!我查一下。我必须弄清楚改变数据访问层需要付出多少努力。。。再次感谢!我希望我能给你打+1分。但一个弹出窗口告诉我,我需要至少15个声誉点才能评级+1(