如何通过编程对ColdFusion cfquery参数进行消毒处理?

3
我继承了一个庞大的 ColdFusion 应用程序。其中有数百个 <cfquery>some sql here #variable#</cfquery> 语句需要按照以下方式进行参数化:<cfquery> some sql here <cfqueryparam value="#variable#"/> </cfquery>
我该如何通过编程方式添加参数化?
我考虑过编写一些正则表达式或类似于 sed/awk 的解决方案,但似乎某个地方已经解决了这样的问题。自动推断 SQL 类型可获得额外奖励分数。

我还没有机会审核http://qpscanner.riaforge.org/或http://www.webapper.net/index.cfm/2008/7/22/ColdFusion-SQL-Injection。但如果其中一个能够获得足够的赞同票,也许我就不必这样做了,我可以接受那个答案。 - Nathan Feger
5个回答

10

注意:QueryParam Scanner的0.8版本将添加自动修复参数的功能,但目前它只能找到参数。 - Peter Boughton

6
这里引用了一个脚本:http://www.webapper.net/index.cfm/2008/7/22/ColdFusion-SQL-Injection,它可以为您完成大部分繁重的工作。您只需检查查询并确保语法能够正确解析即可。
除了更加安全外,没有使用CFQueryParam的借口,还可以提高性能并是处理基于字符的列类型中带引号的值的最佳方式。

此脚本现已上传至 GitHub,供人们获取和贡献。https://github.com/mhenke/WebApper-ColdFusion-SQL-Injection - Mike Henke

3
请记住,您可能无法使用<cfqueryparam>解决所有问题。
我见过很多例子中,排序字段名是通过查询字符串传递的,这是一个稍微棘手的问题,因为您需要以更“手动”的方式验证它。

1
<cf_inputFilter
            scopes = "FORM,COOKIE,URL"
            chars = "<,>,!,&,|,%,=,(,),',{,}"
            tags="script,embed,applet,object,HTML">

我们使用这个来对抗最近的SQL注入攻击。我们将其添加到我们网站的Application.cfm文件中。

0

我怀疑没有一个解决方案能完全符合您的需求。我所看到的唯一选择是编写您自己的递归搜索来为您生成报告,或使用上面列出的应用程序/脚本之一。基本上,您需要编辑每个页面或批准所有自动更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接