28

私は、最近かなり厄介な SQL インジェクション攻撃の対象となった多数の ColdFusion サイトを調査する任務を負っています。基本的に私の仕事は、<cfqueryparamすべてのインライン SQL に > タグを追加することです。大部分は理解できましたが、LIKE 演算子で cfqueryparam を使用する方法を誰か教えてもらえますか?

私のクエリが次のようになっている場合:

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

<cfqueryparam>タグはどのように見えるべきですか?

4

2 に答える 2

50

@ジョエル、私は反対しなければなりません。

select a,b,c
from Foo
where name like <cfqueryparam cfsqltype="columnType" value="%#variables.someName#%" />
  1. 「星を選ぶ」べきだと誰かに決して提案しないでください。悪い形!一例でも!(質問からコピーしたものでも!)

  2. クエリはプリコンパイルされているため、クエリに渡されるパラメータの一部としてワイルドカード文字を含める必要があります。この形式はより読みやすく、より効率的に実行されます。

  3. 文字列の連結を行うときは、プラス記号ではなく、アンパサンド演算子(&)を使用してください。技術的には、ほとんどの場合、plusは問題なく機能します...文字列の途中でNumberFormat()をスローし、チェックしたときに有効な数値を渡していないと言われるのはなぜか疑問に思うまでです。そしてあなたは。

于 2008-09-06T02:21:48.750 に答える
0
select a,b,c
from  Foo
where name like  <cfqueryparam cfsqltype="cf_sql_varchar" value="%Bob%" />;
于 2013-05-16T09:22:01.247 に答える