クロスサイトスクリプティングを簡単に防ぐ方法 | daybのブログ

daybのブログ

ブログの説明を入力します。

クロスサイトスクリプティングとはセキュリティホールの一つでお問合せフォームなど、ユーザーの入力をそのまま画面に表示するプログラムが、悪意のあるコードを訪問者のブラウザに送ってしまう脆弱性のことです。

例)
<お問合せフォーム>

入力画面で下記のようなHTML特殊文字を入力して確認画面へ遷移する。

daybのブログ


確認画面で下記のように表示される。

daybのブログ

打消し線になって表示されている。
これは、クロスサイトスクリプティングの問題が存在する可能性がある。


XSS脆弱性のあるスクリプトはこんなスクリプトである。
例)
daybのブログ
POSTやGETで送られたデータをそのまま表示してるスクリプトです。
実は、PHPの勉強で最初に覚えるこのようなスクリプトが、XSS脆弱性を含んでいるのです。 

先ほどのコードからXSS脆弱性を取り除いたコードです。
daybのブログ
POSTやGETで送られたデータをそのまま表示せず、htmlspecialcharsを一度通してから表示します。
これでXSS脆弱性はなくなります。


htmlspecialchars関数でHTML特殊文字を変換
・HTML特殊文字を探しHTMLエンティティに変換する関数です。具体的には次のように変換します。

daybのブログ


htmlspecialchars関数によるHTML特殊文字の変換が、XSS対策の基本的な方法のひとつになります。
この方法は「汚染を除去」を意味するサニタイズ(無害化)と呼ばれています。