相关疑难解决方法(0)

使用 org.postgresql.core.Utils.escapeLiteral 是否足以防止 SQL 注入?

在构建 sql 查询和更新以提交到我的数据库之前,我需要清理一些用户输入的数据。

我知道最好使用准备好的语句,但这不是一个选项。不幸的是,我坚持要转义所有用户提供的 Input

看起来 Postgres JDBC 库附带了一个工具来进行字符串转义。见org.postgresql.core.Utils.escapeLiteral(..)(见下文)。我希望因为 Postgres 附带了它,所以使用起来是安全的。经过几个小时的谷歌搜索和查看 SQL 备忘单后,我无法找到一个可以打破这个的例子。

以下看起来足够安全吗?

public class FruitDb {

    private Connection connection;

    public void findFruit ( String /* user enterable field */ fruitColor ) {

        String query = "SELECT * FROM fruit WHERE fruit_color = " + quote( fruitColor );

        Statement statement = connection.createStatement();
        statement.executeQuery( sql );
    }

    private String quote( String toQuote ) {
        return "'" + Utils.escapeLiteral( null, s, true ).toString() + "'"; …
Run Code Online (Sandbox Code Playgroud)

java postgresql sql-injection

6
推荐指数
1
解决办法
1984
查看次数

标签 统计

java ×1

postgresql ×1

sql-injection ×1