3

データベースに値を送信するフォームを (ColdFusion で) 作成し、その後、挿入された値を表示します。問題は、ユーザーまたはハッカーが HTML タグまたは JavaScript タグを挿入すると、ColdFusion もそれを出力値として表示することです。

CFset で送信時に特殊文字をフィルタリングする方法があることは知っていますが、その方法は使用したくありません。したがって、次のようなものではありません。

<cfset cleanmessage = ReReplace(getmessages.message, "[^\w]*", "", "ALL")>

出力を表示するときに特殊文字 (<@#!$%^*(&>))のみをフィルタリングする他の方法はありますか?

4

1 に答える 1

3

ユーザー入力をサニタイズするには、(少なくとも) 次の 2 つのことを行う必要があります。

  1. を使用して、SQL のデータをサニタイズします<cfqueryparam ... >。これにより、特殊な SQL 文字とシーケンスをエスケープすることで、SQL インジェクション攻撃を防ぎます。
  2. を使用して表示するときにデータをサニタイズしますHTMLEditFormat()。これにより、特殊な HTML 文字をエスケープすることで、さまざまなクライアント側の脆弱性が防止されます。

セキュリティをさらに強化したい場合は、Portcullisが優れたソリューションのように見えます (ただし、私自身は使用していません)。

の使用について を使用しなくても<cfset ... >同様の機能を使用できます。関数の結果を格納する新しい変数を作成する代わりに、次のように、関数を呼び出したときに結果を表示するだけです。HTMLEditFormat()cfset<cfoutput>#HTMLEditFormat(data)#</cfoutput>

于 2013-03-30T18:36:42.957 に答える