ColdFusion 中带有 like 运算符的 cfqueryparam
-
09-06-2019 - |
题
我的任务是检查一些最近遭受相当严重的 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%" />;
不隶属于 StackOverflow