gpt4 book ai didi

java - 转义字符串的标准库(没有准备好的语句)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:00:08 24 4
gpt4 key购买 nike

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

有没有我可以使用的标准库?我在 Apache Commons 看到过 StringEscapeUtils,但我真的不知道这是否是最先进的。

非常感谢您!

最佳答案

这是一个非常重要的问题,也是一个关键问题,因为 SQL 注入(inject)安全问题。相反,我会考虑使用 SQL ? 类型参数而不是转义。例如,要搜索特定的字符串:

而不是做:

SELECT * FROM accounts
WHERE name = 'escapedstring1' AND password = 'escapedstring2'

我会使用:

SELECT * FROM accounts WHERE name = ? AND password = ?

然后您需要将注入(inject)的字符串(无需任何转义)作为参数传递给您的 SQL 方法。这是 how to do it using 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();

这是如何ORMLite ,我的 ORM 库,使用 select argument 作为示例.

希望这对您有所帮助。

关于java - 转义字符串的标准库(没有准备好的语句),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8082592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com