はじめに
XSS(クロスサイトスクリプティング)という、サイバー攻撃について調べてみましたので、まとめたいと思います。
XSSとは
XSSとは、脆弱性がある(サイバー攻撃に対する策がなされていない)webアプリケーションに対して、プログラム(スクリプト)を埋め込み、悪意のあるwebサイトに誘導させ(クロスサイト)、個人情報を盗むなどの被害をもたらすサイバー攻撃の一つです。
特にJavascriptを利用して罠を仕掛けられていることが多く、専門的知見があれば比較的容易に実行できてしますため、XSSの被害事例が多いと言えます。
XSSによる被害例
フィッシング詐欺
埋め込まれたスクリプトを実行してしまい、悪意のあるサイトに誘導させられ、それに気づかずにIDやパスワードを入力してしまうと、その情報が盗まれてしまうというものです。
また、クレジットカード情報を同じ手法で盗まれることもあります。それによる被害は容易に想像がつきますよね。。。
セッションハイジャック
これはCookieを盗む攻撃手法です。cookieには様々な個人情報が保存されています。普段は一度訪れたwebサイトなどで、パスワードやIdを入力したことがあれば、PCがそれを記憶していて、2回目以降は自動で入力してくれるというような、ユーザーをの手間を省いてくれるなどの仕組みですが、XSS攻撃によりこのcookieの情報を盗まれることがあります。
webサイトの改ざん
XSSでwebサイトのHTMLを書き換えられることがあります。また、フォームの送信先のURLを全く別のURLに改ざんし、悪意のあるページにとばし、フィッシング詐欺をすることが可能になります。
XSSの対策
入力値の制限
XSSは不正なスクリプトを埋め込もうとするので、入力フォームなどには、バリデーションで制限を設けさせることが重要です。例えば電話番号であれば、数字のみでしか受け付けられないようにしておくとか。
また、Javascript側でそのような制限をしていても、Javascriptをオフにしてすり抜けることができるため、サーバーサイド側で制限の設定をすることに気をつけたいです。
エスケープ(サニタイジング)処理をする
エスケープとは、例えば、 HTMLの文法で使われる <, >, &, " などの特別な意味を持つ記号がありますが、この文字を入力された時に別の文字へ書き換えてしまう手法です。そうすることで外部から埋め込まれたスクリプトはただのテキスト(文字列)として認識し、スクリプトコードを無効化することができます。
WAF(Web Application Firewall)
WAFはウェブアプリケーションへの攻撃を検出、防御、保護するためのセキュリティツールです。ネットワーク機器として設置するタイプやインストールして使うソフトウェアタイプがあるそうです。
最後に
アプリケーションの開発中、こういったサイバー攻撃からできるだけ攻撃を受けないように脆弱性を取り除くことを考えながら作業をするということはとても重要だと感じます。
もちろん、開発側もそうですが、我々の日常的に利用しているウェブサービスにもこのようなリスクが潜んでいるということは念頭において利用したいです。