Table of Contents
XSSとは?
クロスサイトスクリプティング(XSS)は、悪意のあるスクリプトをWebサイトに挿入し、ユーザーのブラウザ上で実行させる攻撃手法です。XSS攻撃は、ユーザーの個人情報を盗み取ったり、不正な操作を実行させたりするために利用されます。近年では、Webセキュリティの脆弱性として特に警戒されています。
わかりやすい具体的な例
わかりやすい具体的な例1
ある掲示板サイトで、投稿フォームにJavaScriptのスクリプトを入力し、そのまま表示される仕組みになっている場合、攻撃者は次のようなコードを投稿できます:
この場合、投稿を見た他のユーザーのブラウザ上でスクリプトが実行され、クッキー情報が盗まれる可能性があります。
わかりやすい具体的な例2
銀行のWebサイトのURLパラメータを利用して、攻撃者が偽のログイン画面を埋め込むケースを考えます。
この場合、ユーザーは本物の銀行サイトだと思って情報を入力しますが、実際には攻撃者のサーバーへ送信されてしまいます。
XSSはどのように考案されたのか
XSSの概念は、Webアプリケーションの急速な発展と共に登場しました。特に、ユーザーが自由に入力できるWebフォームや掲示板の普及により、入力値の検証不足が重大なセキュリティリスクとなりました。
考案した人の紹介
XSSの概念を最初に提唱したのは、1990年代後半のWebセキュリティ研究者たちです。その中でも、Jeremiah Grossmanは、XSS攻撃の脅威を早期に指摘し、Web開発者への啓発活動を行いました。
考案された背景
当時、Web開発の多くがセキュリティよりも利便性を重視していたため、サーバー側の入力チェックが甘いケースが多く、攻撃が容易でした。
XSSを学ぶ上でつまづくポイント
XSSの概念を理解する上で、特に多くの人が難しく感じるのは、どのようなデータが危険なのかを特定することです。
XSSの構造
XSSの攻撃は主に、反射型XSS、持続型XSS、DOMベースXSSの3種類に分類されます。
XSSを利用する場面
攻撃者は、ログイン情報の窃取や、Webサイトの改ざんにXSSを利用します。
あわせてこれも押さえよう!
XSSの理解には、以下のサーバー概念も学んでおくとよいでしょう。
- サーバーサイドスクリプト
- クッキーとセッション
- CSRF
- HTTPS
- ブラウザのSame-Origin Policy
Webアプリケーションの動的な処理を担うプログラム言語。
ユーザーの状態を保持するための仕組み。
XSSと組み合わせることで強力な攻撃手法となる。
通信の暗号化によりXSS攻撃を防ぐ要素の1つ。
異なるオリジン間でのスクリプト実行を制限する仕組み。
まとめ
XSSの知識を深めることで、安全なWebサイトの開発が可能になります。また、日常的に利用するWebサービスのセキュリティにも敏感になり、不正アクセスのリスクを回避できます。