如何以编程方式清除ColdFusion cfquery参数?
时间:2020-03-05 18:53:53 来源:igfitidea点击:
我继承了一个大型的旧版ColdFusion应用程序。有数百条<cfquery>此处sql #variable#</ cfquery>语句需要按照以下方式进行参数化:<cfquery>此处sql某些<cfqueryparam value ="#variable#" /> </ cfquery>
如何以编程方式添加参数化?
我曾考虑过编写一些正则表达式或者sed / awk'y解决方案,但似乎某个地方的人已经解决了这个问题。由于自动推断sql类型而获得的奖励积分。
解决方案
回答
有一个queryparam扫描程序可以在RIAForge上为我们找到它们:http://qpscanner.riaforge.org/
回答
这里引用了一个脚本:http://www.webapper.net/index.cfm/2008/7/22/ColdFusion-SQL-Injection将为我们完成大部分繁重的工作。我们所要做的就是检查查询,并确保语法能够正确解析。
不使用CFQueryParam是没有借口的,除了它更安全之外,它还可以提高性能,并且是处理基于字符的列类型中带引号的值的最佳方法。
回答
<cf_inputFilter scopes = "FORM,COOKIE,URL" chars = "<,>,!,&,|,%,=,(,),',{,}" tags="script,embed,applet,object,HTML">
我们用它来抵消最近的SQL注入攻击。我们已将其添加到我们站点的Application.cfm文件中。
回答
我怀疑是否有一种解决方案能够完全满足需求。我看到的唯一选择是编写我们自己的递归搜索来为我们构建报告,或者使用上面列出的应用程序/脚本之一。基本上,我们将必须编辑每个页面或者批准所有自动更改。
回答
请记住,使用<cfqueryparam>可能无法解决所有问题。
我已经看到了许多示例,这些示例在查询字符串中传递字段名顺序,这是一个稍微棘手的问题,因为我们需要以更"手动"的方式进行验证。