我正在寻找一个 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,它是一个非常成熟的项目。