如何以编程方式清理ColdFusion cfquery参数?

时间:2008-09-15 16:28:08

标签: coldfusion sql-injection cfquery cfqueryparam

我继承了一个大型的传统ColdFusion应用程序。这里有数百个< cfquery>一些sql #variable#< / cfquery>需要参数化的语句:< cfquery>这里有一些sql< cfqueryparam value =“#variable#”/> < / CFQUERY>

如何以编程方式添加参数化?

我曾考虑过编写一些正则表达式或sed / awk'y类型的解决方案,但似乎有人在某处处理了这样的问题。为自动推断sql类型而获得的奖励积分。

5 个答案:

答案 0 :(得分:10)

有一个queryparam扫描程序可以在RIAForge上找到它们:http://qpscanner.riaforge.org/

答案 1 :(得分:6)

这里引用了一个脚本:http://www.webapper.net/index.cfm/2008/7/22/ColdFusion-SQL-Injection,它将为您完成大部分繁重的工作。您所要做的就是检查查询并确保语法正确解析。

没有理由不使用CFQueryParam,除了它更安全之外,它还提升了性能,是处理基于字符的列类型中引用值的最佳方法。

答案 2 :(得分:3)

请注意,您可能无法使用< cfqueryparam>解决所有问题。

我已经看到了一些示例,其中字段名称的顺序在查询字符串中传递,这是一个稍微棘手的问题,因为您需要以更“手动”的方式验证它。

答案 3 :(得分:1)

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

我们用它来抵消最近的SQL注入攻击。我们将其添加到我们网站的Application.cfm文件中。

答案 4 :(得分:0)

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