添加了一个清理函数以通过剥离某些字符来防止SQL注入。确实很难手动浏览所有文件并找到应添加功能的位置。有没有办法自动化这个过程或使用查找/替换?我目前正在寻找SELECT
,UPDATE
或INSERT
语句,在其中我寻找#...#
并将其替换为#sanitize(...)#
但它可能会如果在表中更新了多列,则会更复杂。
答案 0 :(得分:1)
sql注入可以在SELECT调用以及任何其他sql调用中进行。不只是UPDATE和INSERT。
答案 1 :(得分:1)
另请参阅cfqueryparam。这不仅有助于防止SQL注入,还可以提高性能。
答案 2 :(得分:0)
您可以在Application.cfm或Application.cfc文件中全局执行此操作。
<cfloop collection="#form#" item="fItem">
<cfset form[fItem] = SanitizeFunction(form[fItem])/>
</cfloop>
为URL,CGI和Cookie添加循环,您已经有效地检查了每个用户提供的变量。这是“Web应用程序防火墙”背后的概念 - 它可以检查每个用户的输入并对其进行擦除或验证,以确保它符合它所声称的内容。
查看超级大师Pete Freitag的产品Foundeo作为例子。他还有很多其他资源。 WAF通常会寻找其他可能的漏洞,而不仅仅是SQLi - 因此它们值得你花时间。
正如斯科特所说 - 你真的应该检查每个查询并添加cfqueryparam以进行深度防御。