【ColdFusion】cfoutputタグを使ったXSS対策(※CF2016以降)

CF2016からcfoutputタグについて
新たに属性encodeforが追加されたようです。

これを使用することでcfoutputタグに囲まれている格式に対して
以前紹介したencodeFor関数を適応できます。
これでencodeFor関数を書かなくて済むみたいです。

属性encodeforに対して有効な設定値は下記の通りです。

属性encodefor設定値
html htmlattribute url javascript css
xml xmlattribute xpath ldap dn

あと「html」を設定した場合のサンプルコードです。

<cfset testFlg = true>
<cfset testString = '<b style="color:red;">あ有A$##@!&</b>'>

<!--- 各式に対してencodeFor*関数が適用される --->
<cfoutput encodefor="html">
    <!--- 三項演算子使用時は問題なし--->
    <!--- 出力結果「<b style="color:red;">あ有A$##@!&</b>」 --->
    #((testFlg IS true) ? testString : "テスト")#
    <!--- iif関数使用時にはエラーとなる --->
    #IIf(testFlg IS true, DE(testString), "テスト")#
</cfoutput>

今の所はCF2016を使った開発はやっていませんが、
いずれ触る時には使っていきたい…(:3_ヽ)_

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です