久々にプログラムの話。
クロスサイトスクリプティング(XSS)とは、なんぞ?
PHP初心者やデザイナーさんだと思うかもしれません。
・クロスサイトスクリプティングとは?XSSとは、WEBシステムを攻撃する手法の一つです。WEB制作者は、この対策をする必要があるとされています。
・具体的にどんなWEBシステムでこの問題が発生するか入力フォームに値をいれて、確認画面で入力した内容を確認するようなシステムが主です(他のケースもあります)。
・どんな対策をすればいいか入力値のチェック(バリデート)
不正な入力値の無効化(サニタイズ)
基本この2つです。
PHPだとhtmlspecialcharsという「htmlタグ」、「&」、「"(ダブルクォート)」、「'(シングルクォート、オプション要)」を「>」などに置き換える関数があります。ユーザーが入力した内容を確認画面で表示する際は、基本この関数を使って表示します。
あと、hiddenのvalueに値を入れる場合、
echo '<input type="hidden" name="hoge" value="'.htmlspecialchars($value).'" />
というように、ダブルクォートで括るようにしましょう。
これで、概ね防ぐことができます。
最近のシステムでは、cssを入れられたり、javascript(ajax)を利用するようなシステムも多いので、この辺りもXSS対策が必要です。
・どんな被害をうける可能性があるかcookieと呼ばれる個人のWEBブラウザ(internet explorer等)の情報が盗まれたりします。(他の被害をうけることもあります)
・誰が被害をうけるかサイト制作者ではなく、サイト利用者が直接被害をうけます。サイト制作者も間接的に被害をうけます。
・XSS対策は必要か必要と言えば必要でしょう。ただ、攻撃者は、XSSなんかより、もっと効率がいい攻撃方法を取るでしょうから、あまりXSSは狙われないかもしれません。
WEBシステムを作る際は、XSSだけでなくいろんなセキュリティー対策が必要です。
例えば、
バッファオーバーフロー
インジェクション
パストラバーザル
セッション乗っ取り
クロスサイトリクエストフォージュリ
クロスサイトトレーシング
画面遷移の正当性
などです。共通処理でできる対策はできるだけ共通で処理を行うのが安全なWEBサイト制作の基本となるでしょう。