質問

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

私のクエリが次のようになった場合:

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

私は何をすべきですか <cfqueryparam>タグはこんな感じでしょうか?

役に立ちましたか?

解決

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

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

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

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

他のヒント

select a,b,c
from  Foo
where name like  <cfqueryparam cfsqltype="cf_sql_varchar" value="%Bob%" />;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top