我正在寻找一个 Java 标准库来在 SQL 语句中使用它们之前转义字符串。这主要是为了防止错误,也是为了防止 SQL 注入。不幸的是,我将无法使用许多其他线程中建议的准备好的语句。
我可以使用任何标准库吗?我在 Apache Commons 见过StringEscapeUtils,但我真的不知道这是否是最先进的。
非常感谢您!
我正在寻找一个 Java 标准库来在 SQL 语句中使用它们之前转义字符串。这主要是为了防止错误,也是为了防止 SQL 注入。不幸的是,我将无法使用许多其他线程中建议的准备好的语句。
我可以使用任何标准库吗?我在 Apache Commons 见过StringEscapeUtils,但我真的不知道这是否是最先进的。
非常感谢您!
由于 SQL 注入安全问题,这是一个重要的问题,也是一个关键的问题。我会考虑使用 SQL?类型参数而不是转义。例如,要搜索特定字符串:
而不是这样做:
SELECT * FROM accounts
WHERE name = 'escapedstring1' AND password = 'escapedstring2'
我会使用:
SELECT * FROM accounts WHERE name = ? AND password = ?
然后,您需要将注入的字符串(无需任何转义)作为参数传递给您的 SQL 方法。这是使用 JDBC的方法。不确定这是否适用于您。
就像是:
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 库ORMLite如何使用选择参数作为示例。
希望这可以帮助。
你可以使用 Apache Commons,它是一个非常成熟的项目。