Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 转义字符串的标准库(无准备语句)_Java_Sql_Stringescapeutils - Fatal编程技术网

Java 转义字符串的标准库(无准备语句)

Java 转义字符串的标准库(无准备语句),java,sql,stringescapeutils,Java,Sql,Stringescapeutils,我正在搜索一个Java标准库,以便在SQL语句中使用字符串之前对其进行转义。这主要是为了防止错误和SQL注入。 不幸的是,我将无法像许多其他线程中建议的那样使用准备好的语句 有我可以使用的标准图书馆吗? 我在Apache Commons上看过StringEscapeUtils,但我真的不知道这是否是最先进的 提前非常感谢 由于SQL注入安全问题,这是一个非常重要的问题。我将考虑使用SQL ./COD>类型参数,而不是逃避。例如,要搜索特定字符串,请执行以下操作: 而不是做: SELECT *

我正在搜索一个Java标准库,以便在SQL语句中使用字符串之前对其进行转义。这主要是为了防止错误和SQL注入。 不幸的是,我将无法像许多其他线程中建议的那样使用准备好的语句

有我可以使用的标准图书馆吗? 我在Apache Commons上看过
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(