不使用cfqueryparam防止SQL注入

时间:2015-08-04 16:39:15

标签: coldfusion sql-injection

我有一些包含大量查询的旧项目,这些查询没有使用IValidateableCommandHandler<TCommand>来阻止SQL注入。有没有办法在每个表单字段上使用某些函数在应用程序级别上执行类似操作?

作为一名具有PHP背景知识的初学者,我认为我可以循环发布数据并执行cfqueryparam或类似操作。但我不希望数据以转义形式保存。我认为escape_string()并不以转义形式保存数据。 (我还没有尝试过。我是CF的新手。)否则,我必须在每次检索时回溯数据,这是我不想做的。我希望按原样插入和检索输入。

基本上我只是希望它在应用程序级别完成,所以我不必在每个项目上逐个更改数千个查询。

示例输入

cfqueryparam

2 个答案:

答案 0 :(得分:12)

我去过三家不同的公司,他们必须完成一个完整的项目冻结并分配所有开发人员来更新对查询和存储过程的调用。有些甚至不得不聘请承包商这样做几个月。你将不得不咬紧牙关并手动完成它们。

您可以借此机会删除一堆冗余查询,将其替换为存储过程并将其移至CFC。这样您就可以重复使用单一来源的查询,并减少您必须完成的工作量。

您可以放置​​Web应用程序防火墙(WAF)来处理来自外部的一些请求,但它们不是100%。根据您的客户端,代码必须在不使用WAF的情况下防止SQL注入。

答案 1 :(得分:4)

您可以结帐FuseGuard。它是一个ColdFusion Web应用程序防火墙,它过滤的内容之一是SQL注入攻击。

使用cfqueryparam可以更安全地咬住子弹并更改所有查询,但FuseGuard比修复大型应用程序并快速启动并运行更便宜。

当我的团队遇到你的情况(接管有数千个不受保护的查询的现有应用程序)时,我们安装了FuseGuard,然后开始处理查询,因为我们可以得到时间。

我与FuseGuard没有任何财务联系 - 只是一个快乐的客户。