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

悪意のあるユーザによりJavascriptなどのスクリプトが埋め込まれる問題。
他のユーザーがそのページを表示した際に、埋め込まれたスクリプトが実行され、色々な問題が引き起こされる。


■対策

htmlspecialchars() により入力データをエスケープする。


■注意

<style> や <script> の内部に入力データを挿入する場合は、htmlspecialchars() だけでは不十分である。
この場合は、はてなダイアリーXSS対策を参考にする。


■メモ

サニタイジングはHTML生成時に行うのが良い。

フォーム受付時に行うと、将来他の入力方法を追加した場合にサニタイジングを忘れたり、重複して行うなどのトラブルを起こしやすい。


<悪いケース>
フォーム─→サニタイジング────→プログラム処理────→出力
               ↑
メール(追加)────────┘ ←(サニタイジング忘れる)

<良いケース>
フォーム────→プログラム処理────→サニタイジング─→出力
       ↑
メール(追加)┘

配列に対して htmlspecialchars() を適用したい場合は array_map() が便利。

$output_array = array_map('htmlspecialchars', $output_array);


○参考
2005年08月19日(金) 03:57:02 Modified by isamun3




スマートフォン版で見る