在ColdFusion中使用like运算符的cfqueryparam

28

我被派任务检查一些最近遭受恶意SQL注入攻击的ColdFusion网站。我的工作基本上是在所有内联SQL中添加<cfqueryparam>标签。大部分情况下我已经掌握了,但是有人可以告诉我如何在LIKE运算符中使用cfqueryparam吗?

如果我的查询看起来像这样:

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

我的<cfqueryparam>标签应该长什么样子?

2个回答

50

@Joel,我不同意。

select a,b,c
from Foo
where name like <cfqueryparam cfsqltype="columnType" value="%#variables.someName#%" />
  1. 不要建议任何人使用"select star",即使只是举个例子也不行(即使是从问题中复制的!)。

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

  3. 在进行字符串连接时,请使用和号操作符(&),而不是加号。技术上,在大多数情况下,加号也能正常工作……直到你在字符串中间加入NumberFormat(),然后开始想知道为什么系统提示你未传递有效数字,而你已经检查并确认数字是有效的。


同意不选择*,但我只是在匹配原始问题中的示例查询。 - Joel Coehoorn
1
@Adam,天啊,这个回答太老了。不过仍然100%正确。我发现它非常有帮助。 - Evik James

0
select a,b,c
from  Foo
where name like  <cfqueryparam cfsqltype="cf_sql_varchar" value="%Bob%" />;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接