【问题标题】:Convert dynamic insert statement into parameterized statement将动态插入语句转换为参数化语句
【发布时间】:2015-05-08 16:42:43
【问题描述】:

我的应用程序根据传入的数据构建动态插入语句。

例如,它动态构建插入查询,例如:

insert into employees (name, age) values ('Tim', 12)

(我使用sqlbuilder 动态生成上述查询。我无法控制哪些列/表将构成插入语句 - 它取决于传入的数据。例如,下一条语句可能是喜欢:insert into employees (building, salary) values ('Green tower', 9999))

我不想使用上面的语句,因为它是开放的 sql 注入。

我需要将其转换为 PreparedStatement,如下所示:

PreparedStatement preparedStatement = dbConnection.prepareStatement(insertSQL);
preparedStatement.setString(1, "Tim");
preparedStatement.setInt(2, 99);

有没有图书馆可以为我做这件事?

【问题讨论】:

  • 我感觉您可能会从使用 JPA 中受益。

标签: java sql jdbc prepared-statement sql-injection


【解决方案1】:

您的工具不依赖 PreparedStatements,因此无法解决该问题。你有什么选择:

  • 选择不同的工具来构建查询

  • 或确保您的机制免受 SQL 注入 (take a look at ESAPI)

【讨论】:

    猜你喜欢
    • 2012-03-19
    • 2022-06-11
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多