【问题标题】:Converting Dynamic SQL Query to a Prepared statement in Java在 Java 中将动态 SQL 查询转换为准备好的语句
【发布时间】:2011-08-31 14:00:40
【问题描述】:

我想编写一个程序,将 SQL 动态查询转换为 Java 中的预准备语句。

所以如果给定一个像“SELECT * FROM EMPLOYEE_TABLE WHERE FIRST_NAME='BOB';”这样的字符串

我想使用代码将其转换为 java 准备好的语句。

是否有任何现有的工具可以做到这一点,如果没有,您能否提供有关创建此类工具的任何信息?

谢谢!

【问题讨论】:

  • 你解决了这个问题吗?
  • 不是真的,很遗憾。

标签: java sql-injection prepared-statement dynamicquery


【解决方案1】:

JDBC 特别是prepared statements的部分。

在您对 JDBC 有所了解之前,我不会使用任何映射技术。

【讨论】:

  • 感谢您的回答。我对 JDBC 和 Prepared Statements 非常熟悉。但是,我正在编写的程序是通过程序源代码,发现 SQL 注入漏洞(主要是动态查询),将查询重写为准备好的语句并执行它。
  • 我相信如果你正确使用准备好的语句,你不会有sql注入问题。但听起来您正在动态加入表(而不仅仅是替换 where 子句参数)。如果是这种情况,您应该认真考虑映射技术。另请参阅:stackoverflow.com/questions/1291584/is-jdbc-secure
  • 是的,我同意。我的程序将做的是使用 Aspects 遍历 Web 应用程序源代码,找到动态查询(不安全),解析查询,然后编织一个安全的准备好的语句,该语句将代替不安全的动态执行询问。我认为我最好的解决方案是使用查询解析器,然后根据那里收集的信息生成准备好的语句。
  • @bsimic 您可以在所有 Connection.createStatements 或 Statement.executeQuery 上放置一个调用者切入点(您将需要 AJ 声明性)。但我认为重构代码可能会更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
  • 1970-01-01
  • 2014-07-11
  • 2021-11-11
  • 2023-04-04
  • 2020-03-04
相关资源
最近更新 更多