クロスサイトスクリプティングについて

今回紹介する内容は、クロスサイトスクリプティング攻撃(XSS)について記載します。
クロスサイトスクリプティングとは、インターネット等にあるWebサイトの脆弱性を利用した攻撃です。
悪意あるサイトではこの攻撃方法を使って、個人情報を盗む行為がありますので注意が必要です。

クロスサイトスクリプティング攻撃の内容

攻撃者は例えば、インターネット掲示板に「お得な情報を知りたい方はこちらをクリック!」等の閲覧者の興味を引くようなリンクを張ります。
このリンクの中にスクリプト文が含まれており、ユーザは無意識の内にスクリプトを含んだままアクセスしてしまいます。
例として、<script>alert(“クロスサイトスクリプティング");</script>といった文が含まれたリンクだった場合、ページを開いた時にポップアップで”クロスサイトスクリプティング”と表示されるような事です。
他にもページの改ざんを行い、実際の画面と似せた攻撃者のサイトを表示させ、例えばクレジットカードの入力や住所の入力を促して、送信した情報が攻撃者の方へ転送されてしまうケースがあります。

クロスサイトスクリプティング攻撃に対しての対策

・入力フォームのチェック導入
これは文字・数字の入力を固定させることでイレギュラーな入力に対して制限ができます。
script文を入力させない為にも文字数制限をかけることも重要と言えます。
例えば、携帯電話の番号を入力するフォームは”「-(ハイフン)」無しの11桁数字のみ”という制限です。
ただし、フォームチェックに関してはサーバ制御に組み込まないと意味がありませんので注意です。
ブラウザ上のフォームに制限を入れたとしてもブラウザの情報が書き換えられて実行されてしまう可能性がある為です。
・サニタイジング処理を導入
サニタイジングとは入力した文字データの中で特別な意味(HTMLタグやJAVASCRIPT文等)を持つ文字に対して、
別の表記に書き換える処理を行う対策です。
変換される特殊文字の一例として以下があります。
小なり< → &lt;
大なり> → &gt;
ダブルコーテーション” → &quot;
冒頭で記載した、スクリプト文を仮に実行したとすると、変換されている内容は下記の様になります。
&lt;script&gt;alert(&quot;クロスサイトスクリプティング&quot;);&lt;/script&gt;

最後に

完全に防ぐということは難しい内容になりますが、不用意に怪しいサイトにアクセスしないことや、
Webサイトを作成する機会があれば、入力チェックやサニタイジングを実施してスクリプト無効にしていく等の対策を取っていただくことで防ぐことは可能です。
セキュリティ知識として参考にしていただければ幸いです。