2008-09-05 9 views
23

最近、かなり厄介なSQLインジェクション攻撃の対象となっていた多くのColdFusionサイトを経由することが任されました。基本的に私の仕事はすべてのインラインSQLに<cfqueryparam>タグを追加することです。ほとんどの場合、私はそれを理解しましたが、LIKE演算子でcfqueryparamを使用する方法を教えてください。ColdFusionでlikeオペレータを使用したcfqueryparam

私のクエリは次のようになります場合:

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

は私<cfqueryparam>タグが好きなものになるはずですか?

答えて

45

@Joeel、私は反対する必要があります。

select a,b,c 
from Foo 
where name like <cfqueryparam cfsqltype="columnType" value="%#variables.someName#%" /> 
  1. 、彼らがすべきことを誰かに勧め決して "星を選択します。"悪いフォーム!たとえ一例であっても!

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

  3. 文字列連結を実行するときは、プラス記号ではなくアンパサンド演算子(&)を使用します。技術的には、ほとんどの場合、プラスは正常に動作します。文字列の中央にNumberFormat()をスローし、チェックしたときに有効な数値を渡していないという理由が不思議になるまでそしてあなたは。

+0

*選択していないに同意するが、私は元の質問でサンプルクエリに合致ました。 –

+0

@Adam、holy cr @ pこれは古い答えです。それでも100%正しい。私はちょうどそれが非常に有用であることが判明 –

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

これは、すでに受け入れられている回答と本質的に同じですか? –

関連する問題