XSS(クロスサイトスクリプティング)対策されているかのチェック

必要な時にググって探すのもアレなのでテスト用の構文をメモメモ。

チェック方法は下記の文字列をテキスト入力窓に入れるだけ。エンターしてアラートが出ればアウト。

"></script><script>alert(0)</script>

-----

XSS(クロスサイトスクリプティング)は、要するに検索窓などでフォームのテキスト欄にJSのソースを入力して動作させるもの。上記の「アラートを出す」というプログラムが動くということは、もっと複雑で長いプログラムも動作させることができてアレコレとヤバい事もできちゃうという攻撃方法。

対策は割と簡単でHTML上に記述される文字列を生のままでなくHTMLエスケープすれば良いだけ。例えば「<」→「&lt;」といった具合の変換処理を受け取り時に入れておけば、確認表示の文字列での見た目上は「<」であってもHTMLソース上では「&lt;」なのでjsは動作しないということ。

対策の例)
$sort_word = htmlspecialchars($_GET['s'], ENT_QUOTES, "UTF-8");

※上記ではGETで送られてきたsをエスケープしたものを変数に格納している。使う時には「$_GET['s']」を生で使うのではなく、変数「$sort_word 」を利用すればOK。

一番難しいのは技術的な話ではなく、すべてのフォームにXSS対策という意識を常に維持する部分でしょうか。バタバタして後回しにして、つい抜けちゃう事が無いように。