3

我继承了一个大型的旧版 ColdFusion 应用程序。有数百个 <cfquery>some sql here #variable#</cfquery> 语句需要沿以下行参数化: <cfquery> some sql here <cfqueryparam value="#variable#"/> </cfquery>

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

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

4

5 回答 5

10

有一个查询参数扫描器可以在 RIAForge 上为您找到它们:http: //qpscanner.riaforge.org/

于 2008-09-15T16:41:45.737 回答
6

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

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

于 2008-09-15T17:47:53.783 回答
3

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

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

于 2008-09-16T22:52:37.337 回答
1
<cf_inputFilter
            scopes = "FORM,COOKIE,URL"
            chars = "<,>,!,&,|,%,=,(,),',{,}"
            tags="script,embed,applet,object,HTML">

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

于 2008-09-16T14:16:52.443 回答
0

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

于 2008-09-16T15:38:56.410 回答