我被派任务检查一些最近遭受恶意SQL注入攻击的ColdFusion网站。我的工作基本上是在所有内联SQL中添加<cfqueryparam
>标签。大部分情况下我已经掌握了,但是有人可以告诉我如何在LIKE运算符中使用cfqueryparam吗?
如果我的查询看起来像这样:
select * from Foo where name like '%Bob%'
我的<cfqueryparam>
标签应该长什么样子?
我被派任务检查一些最近遭受恶意SQL注入攻击的ColdFusion网站。我的工作基本上是在所有内联SQL中添加<cfqueryparam
>标签。大部分情况下我已经掌握了,但是有人可以告诉我如何在LIKE运算符中使用cfqueryparam吗?
如果我的查询看起来像这样:
select * from Foo where name like '%Bob%'
我的<cfqueryparam>
标签应该长什么样子?
@Joel,我不同意。
select a,b,c
from Foo
where name like <cfqueryparam cfsqltype="columnType" value="%#variables.someName#%" />
不要建议任何人使用"select star",即使只是举个例子也不行(即使是从问题中复制的!)。
查询语句是预编译的,应将通配符作为传递给查询的参数的一部分。这种格式更易读,并且运行效率更高。
在进行字符串连接时,请使用和号操作符(&),而不是加号。技术上,在大多数情况下,加号也能正常工作……直到你在字符串中间加入NumberFormat(),然后开始想知道为什么系统提示你未传递有效数字,而你已经检查并确认数字是有效的。
select a,b,c
from Foo
where name like <cfqueryparam cfsqltype="cf_sql_varchar" value="%Bob%" />;