XSS対策に必須のエスケープ処理


サイバー犯罪の中でも特にWebサイトの脆弱性を狙うXSS(クロスサイトスクリプティング)の攻撃は、長年に渡って数多く発生しており、その被害は後を絶ちません。もちろん、セキュリティツールで防御しリスクを軽減することは必要ですが、WebページやWebアプリ開発時にエスケープ処理などのセキュリティ対策を行っておくことが重要です。

XSSは、Webサイトの脆弱性を狙い、悪意のある別サイトへ誘導したり、Cookieの情報を盗んだりと多彩な攻撃を仕掛けて来ます。その多くは標的となったサイトのWebページに悪意のあるスクリプト等を埋め込まれ実行されるので、Webサイト制作時にエスケープ処理などの対策を行っておくことは必須です。
Webのアプリ開発を行っている専門知識を持った人であれば、あまりにも基本的なことではありますが、WordpressのようなCMSで素人でも簡単にWebページの作成ができてしまう近年の傾向では、Webサイト制作に携わっているのにXSSやエスケープのことさえよくわかっていない人も増えてきています。実際、JVN iPediaの脆弱性対策情報のデータベースで”Wordpress クロスサイトスクリプティング”で検索すると、膨大な量の事象が確認できます。これらを見れば、Wordpressの環境では、使用しているテーマやプラグインなどを常に最新にアップデートしておくことはもちろん必要ですが、コメントや問い合わせのように入力フォームがある場合は、プラグインや自身で作成した部分で、正しくエスケープ処理が行われているのかを確認することが、絶対に必要です。

エスケープとは、プログラムで扱う特殊な記号を普通の文字列として扱いたい時に行う処理のことで、Webページであれば入力フォームから記入された特殊文字を、HTMLのタグやスクリプトとして実行できないように文字変換して無害化することです。無害化が目的なので、入力された内容をチェックして、スクリプトと疑われるような記述をすること入力禁止にすることも重要ですが、Webページを表示するなどの出力時にエスケープ処理が施されていることが大切です。
たとえば、PHPであればhtmlspecialchars関数を使えば文字変換を行えますが、JavaScriptであれば、文字列を表すStringオブジェクトのreplaceメソッド等で文字列の置換の処理を組み込むべきでしょう。
Webページの作成で気を付けたいのは、検索結果の表示や、エラー表示、コメント入力などですが、ユーザ情報などを記入させた後に訂正がないか一旦表示させる確認画面などが特に要注意です。

マーケティング目的など、Webサイトの需要が多くなってきたため、早く手軽に公開できるWebページは有望ですが、それ故Webのセキュリティに対し知識が低い人も多くWeb開発に関わるようになってきました。たとえば、エスケープ処理に関しても、これらを無視してWebサイトを構築してしまっては、それが脆弱性を内在させていることになり、サイバー攻撃に対する大きなリスクになってしまうことを認識する必要があります。


エスケープ処理を怠ることは、セキュリティホールを作ってしまう


XSS, エスケープ, 脆弱性