代码之家  ›  专栏  ›  技术社区  ›  Doug R

在ColdFusion中使用Like运算符的cfQueryParam

  •  24
  • Doug R  · 技术社区  · 17 年前

    我的任务是访问一些ColdFusion站点,这些站点最近受到了相当严重的SQL注入攻击。基本上我的工作包括 <cfqueryparam >标记到所有内联SQL。在大多数情况下,我都记下来了,但是有人能告诉我如何使用cfqueryparam和like操作符吗?

    如果我的查询如下所示:

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

    我该怎么办? <CFQuayPARAM >标记看起来像?

    2 回复  |  直到 13 年前
        1
  •  47
  •   ale    14 年前

    @乔尔,我不同意。

    select a,b,c
    from Foo
    where name like <cfqueryparam cfsqltype="columnType" value="%#variables.someName#%" />
    
    1. 千万不要向别人建议他们应该“选择明星”。糟糕的形式!即使是举个例子!(甚至是从问题中抄来的!)

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

    3. 进行字符串连接时,请使用与号运算符(&)而不是加号。从技术上讲,在大多数情况下,加上会工作得很好…直到你在字符串中间抛出一个numberFormat()并开始想为什么当你检查完后会被告知你没有传递一个有效的数字。

        2
  •  -1
  •   Leigh josh poley    13 年前
    select a,b,c
    from  Foo
    where name like  <cfqueryparam cfsqltype="cf_sql_varchar" value="%Bob%" />;