gpt4 book ai didi

java - 在不使用准备语句的情况下防止 JDBC 中的 SQL 注入(inject)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:26:17 25 4
gpt4 key购买 nike

我知道使用准备好的语句是防止 SQL 注入(inject)(以及由于未经检查的输入中的未转义字符导致的语法错误)的最佳方法。

我目前的情况是,我正在编写一些 Java 代码以将数据从一个第三方应用程序移动到另一个应用程序。目标应用程序使用 Sybase 的专有版本,所以虽然我有 JTDS JDBC 驱动程序 PreparedStatement 失败,因为该驱动程序使用的临时存储过程在这种特定类型的数据库中不受支持。所以我只有 Statement 可以使用,我无法控制用户输入,因为它来自另一个应用程序。

this similar question但它的重点是解决你有一个参数的问题,比如一个不能通过准备好的语句处理的表。我的情况不同并且希望更简单,因为我有简单的 SQL 语句。我想知道是否有在不使用 PreparedStatement 的情况下复制类似以下内容的最佳实践:

PreparedStatement statement = connection.prepareStatement("UPDATE mytable SET value=? WHERE id=?");
statement.setInt(1, getID());
statement.setString(2,userInput);
statement.executeUpdate();

所以我想问题是如何可靠地清理用户输入?我可以尝试自己从头开始做这件事,但这似乎是个坏主意,因为我可能至少会错过一个边缘案例,所以我希望那里有一个图书馆可以为我做这件事,但是到目前为止我还没有找到。

最佳答案

ESAPI 库有 escaping input for SQL 的程序并在必要时开发您自己的特定于数据库的编码器。

关于java - 在不使用准备语句的情况下防止 JDBC 中的 SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272590/

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