仕事に関係する情報のメモ 技術、プロジェクト管理など

火曜日, 5月 13, 2008

クロスサイトスクリプティング対策

[本文の場合]
本文で特殊文字となる文字は、「<」「>」「&」の3つである。「<」と「>」は本文とタグを区切る開始と終了という特別な意味を持つ特殊文字で、「&」は文字参照(character references)を記述するための開始文字という意味を持つ特殊文字である。

これらの3つの文字をサニタイジングするには、それぞれ「<」「>」「&」に変換する。

[タグの場合]
<input type="hidden" name="namae" value="kokubu">
上記「"hidden"」「"namae"」「"kokubu"」の部分(属性値と呼ぶ)に入力値を入れる場合で、正しくサニタイジングをする必要がある。
属性値は必ず「"(ダブルクオーテーション)」または「'(シングルクオーテーション)」で囲む。これはW3Cが推奨しているのと同時に、サニタイジングが必要な特殊文字を限定することになる
「"」で囲った場合の特殊文字は「"」だけとなる。同様に「'」で囲った場合は「'」だけとなる。それぞれ、「"」と「'」に変換することでサニタイジング完了となる。

こうすることで、「""><script>alert("test");</script>"」という入力がなされても、 「alert("test");< /script>">」となり、タグが無効となる。

<>が入力値と同じでなくとも良いのなら、以下のような方法もある。
・「<」と「>」を消してしまう
・「<」と「>」を全角「<」「>」にしてしまう

0 件のコメント: