我的任务是检查一些最近遭受相当严重的 SQL 注入攻击的 ColdFusion 站点。基本上我的工作涉及添加 <cfqueryparam> 标记到所有内联 sql。大多数情况下我已经把它记下来了,但是有人能告诉我如何将 cfqueryparam 与 LIKE 运算符一起使用吗?

如果我的查询如下所示:

select * from Foo where name like '%Bob%'

我应该做什么 <cfqueryparam> 标签是什么样的?

有帮助吗?

解决方案

@Joel,我必须不同意。

select a,b,c
from Foo
where name like <cfqueryparam cfsqltype="columnType" value="%#variables.someName#%" />
  1. 永远不要向某人建议他们应该“选择星星”。不好的形式!甚至举个例子!(甚至是从问题中复制的!)

  2. 该查询是预编译的,您应该将通配符作为传递给查询的参数的一部分。这种格式更具可读性并且运行效率更高。

  3. 进行字符串连接时,请使用与运算符 (&),而不是加号。从技术上讲,在大多数情况下,plus 就可以很好地工作......直到您在字符串中间抛出一个 NumberFormat() 并开始想知道为什么在您检查过之后却被告知您没有传递有效数字。

其他提示

select a,b,c
from  Foo
where name like  <cfqueryparam cfsqltype="cf_sql_varchar" value="%Bob%" />;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top