添加了清理功能以通过剥离某些字符来防止 SQL 注入。确实很难手动浏览所有文件并找到应该添加功能的位置。有没有办法自动化这个过程或使用查找/替换?我目前正在做的是寻找SELECT
, UPDATE
or INSERT
statements 并在其中寻找#...#
并替换它,#sanitize(...)#
但如果表中有多个列正在更新,它可能会更复杂。
编辑:可以使用 grep 吗?如果您不知道答案,请考虑对此问题进行投票。
添加了清理功能以通过剥离某些字符来防止 SQL 注入。确实很难手动浏览所有文件并找到应该添加功能的位置。有没有办法自动化这个过程或使用查找/替换?我目前正在做的是寻找SELECT
, UPDATE
or INSERT
statements 并在其中寻找#...#
并替换它,#sanitize(...)#
但如果表中有多个列正在更新,它可能会更复杂。
编辑:可以使用 grep 吗?如果您不知道答案,请考虑对此问题进行投票。
sql 注入可以发生在 SELECT 调用以及任何其他 sql 调用中。不仅仅是更新和插入。
还要查看 cfqueryparam。这不仅有助于防止 SQL 注入,还可以略微提升性能。
您可以在 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 - 因此它们值得您花时间。
正如 Scott 所说 - 您确实应该检查每个查询并添加 cfqueryparam 以进行深度防御。