从SQL注入保护静态SQL查询

时间:2015-04-30 06:08:56

标签: java mysql prepared-statement sql-injection fortify

我有一个应用程序,它读取包含数据库参数和静态SQL语句的数千个平面文件。在我的java代码中,我采用SQL语句并执行它。由于可能的SQL注入漏洞,这是Fortify无法接受的。 例如我的平面文件如下所示:

query: SELECT USER_ID FROM SOME_TABLE WHERE ID='2'

我拿query并执行它。

我的问题是如何才能使这些静态SQL安全? 有没有办法将这些SQL转换为PreparedStatements?

1 个答案:

答案 0 :(得分:1)

如果你没有根据用户输入改变从你的文件中读取的SQL语句,那么就没有SQL注入。

另一方面,如果你不能严格控制这个文件中的内容(谁可以编辑它?),那么整个程序就是一个巨大的SQL注入器。

即使没有绑定参数,也可以使用PreparedStatement使代码审查工具满意。这当然不会以任何方式提高安全性。