クロスサイトスクリプティング(Cross Site Scripting)

cross-site-scripting セキュリティ

Webサイトに悪意のあるスクリプト(プログラム)を仕込んで、見ている人の情報を盗む攻撃のこと

簡単な説明

クロスサイトスクリプティングってのは、コメント欄とかに変なコードを仕込んで、見た人の情報を盗む悪いワザだよ。
たとえば、勝手にポップアップ出したり、クッキー抜いたりできちゃう。
ちゃんと対策しないと、サイト使ってる人が危ない目にあうんだ。

由来

クロスサイトスクリプティング(Cross Site Scripting)は、略してXSSとも呼ばれます。「クロスサイト」とは「別のサイトをまたいで」という意味で、「スクリプティング」はJavaScriptなどのプログラムコードのことです。2000年代初頭から多くのWebサイトで発見されるようになり、今も非常に多いサイバー攻撃の一つです。

具体的な説明

XSSは、ユーザーが入力するデータをWebページに表示するような機能(掲示板、コメント欄、検索窓など)に対して、悪意のあるJavaScriptなどを混ぜて送ることで、他の人のブラウザ上でそのスクリプトを実行させてしまうという攻撃です。

例えば、あるブログのコメント欄に以下のような入力をしたとします:

<script>alert("あなたの情報が盗まれました");</script>

このスクリプトがそのまま保存されて表示されてしまうと、ページを見た他の人のブラウザでこのプログラムが実行され、「あなたの情報が盗まれました」というメッセージが出るのです。実際には、クッキー情報を盗む、偽のログイン画面を表示させるなど、もっと悪質なことができます。

XSSは大きく3種類に分類されます:

  1. Stored XSS(保存型):悪意のあるスクリプトがサーバに保存され、他のユーザーがページを見たときに実行される。
  2. Reflected XSS(反射型):URLに含まれたスクリプトがそのまま返され、すぐに実行される。
  3. DOM-based XSS:JavaScriptなどのクライアント側スクリプトでDOM操作を通してスクリプトが実行される。

すべてに共通するのは、サニタイズ処理(無害化処理)やエスケープ処理の不足です。

例文

「友達が使っている掲示板に、変なメッセージが出るようになっていたんだけど、それってクロスサイトスクリプティングのせいだったんだって!」

疑問

Q: なんで「クロスサイト」っていうのですか?

A: 攻撃者が自分のWebサイトから、他人のWebサイトをまたいで悪さをするからです。

Q: JavaScriptだけが使われるのですか?

A: 主にJavaScriptですが、他にもHTMLやCSSでトリックを仕込むこともあります。

Q: 自分のスマホでもXSSの被害にあいますか?

A: はい、スマホのブラウザでも同じようにスクリプトが実行されてしまう可能性があります。

Q: 対策はどうするのですか?

A: 入力されたデータをそのまま表示せず、HTMLタグを無効にする「エスケープ処理」が有効です。

Q: ITパスポート試験ではどんな形で出題されますか?

A: 「Webサイトにスクリプトを埋め込む攻撃手法として適切なものはどれか」といった選択肢で出されます。

理解度を確認する問題

Webサイトの入力欄に悪意のあるスクリプトを埋め込み、他の利用者のブラウザ上でそのスクリプトを実行させる攻撃を何というか?

A. フィッシング
B. SQLインジェクション
C. クロスサイトスクリプティング
D. ディレクトリトラバーサル

正解: C. クロスサイトスクリプティング

関連論文や参考URL

「A Study of Cross-site Scripting Vulnerabilities」(IEEE, 2015)

解説:
この論文では、上位1000のWebサイトを調査し、約23%に何らかのXSS脆弱性が見つかったと報告されています。

結果:
サニタイズ処理の不足が原因で、特に小規模サイトでは対策が不十分であることが確認されました。

まとめ

クロスサイトスクリプティング(XSS)は、Webサイトに悪意のあるスクリプトを仕込む攻撃です。
ユーザーの情報(クッキーなど)を盗んだり、偽の画面を表示させたりします。
対策としては、入力内容のエスケープ処理や検証が重要です。

コメント

タイトルとURLをコピーしました