我继承了一个大型的传统ColdFusion应用程序。这里有数百个< cfquery>一些sql #variable#< / cfquery>需要参数化的语句:< cfquery>这里有一些sql< cfqueryparam value =“#variable#”/> < / CFQUERY>
如何以编程方式添加参数化?
我曾考虑过编写一些正则表达式或sed / awk'y类型的解决方案,但似乎有人在某处处理了这样的问题。为自动推断sql类型而获得的奖励积分。
答案 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)
我怀疑有一个完全符合您需求的解决方案。我看到的唯一选择是编写自己的递归搜索,为您构建报告或使用上面列出的其中一个应用程序/脚本。基本上,您将不得不编辑每个页面或批准所有自动更改。