我有一个应用程序,它读取包含数据库参数和静态SQL语句的数千个平面文件。在我的java代码中,我采用SQL语句并执行它。由于可能的SQL注入漏洞,这是Fortify无法接受的。 例如我的平面文件如下所示:
query: SELECT USER_ID FROM SOME_TABLE WHERE ID='2'
我拿query
并执行它。
我的问题是如何才能使这些静态SQL安全? 有没有办法将这些SQL转换为PreparedStatements?
答案 0 :(得分:1)
如果你没有根据用户输入改变从你的文件中读取的SQL语句,那么就没有SQL注入。
另一方面,如果你不能严格控制这个文件中的内容(谁可以编辑它?),那么整个程序就是一个巨大的SQL注入器。
即使没有绑定参数,也可以使用PreparedStatement使代码审查工具满意。这当然不会以任何方式提高安全性。