我的任务是浏览一些最近成为相当严重的 SQL 注入攻击的 ColdFusion 站点。基本上我的工作涉及将<cfqueryparam
> 标记添加到所有内联 sql。在大多数情况下,我已经把它记下来了,但是谁能告诉我如何将 cfqueryparam 与 LIKE 运算符一起使用?
如果我的查询如下所示:
select * from Foo where name like '%Bob%'
我的<cfqueryparam
> 标签应该是什么样的?
我的任务是浏览一些最近成为相当严重的 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#%" />
永远不要向某人建议他们应该“选择明星”。形式不好!甚至举个例子!(甚至从问题中复制!)
查询是预编译的,您应该将通配符作为传递给查询的参数的一部分。这种格式更易读,运行效率更高。
进行字符串连接时,请使用与号运算符 (&),而不是加号。从技术上讲,在大多数情况下,plus 可以正常工作......直到您在字符串中间抛出一个 NumberFormat() 并开始想知道为什么在您检查时被告知您没有传递有效数字你是。
select a,b,c
from Foo
where name like <cfqueryparam cfsqltype="cf_sql_varchar" value="%Bob%" />;