XSS
Cross-Site Scripting(クロスサイトスクリプティング)は、一般的 なウェブセキュリティ脆弱性 で、攻撃者 が悪意 のあるスクリプトをウェブページに注入 し、ユーザーのブラウザ上 で実行 させることができる。この攻撃 は、フォーム、コメント欄 、検索 ボックスなどのユーザーインタラクション機能 を持 つウェブページで発生 することが多 い。
XSS 脆弱性 を悪用 して以下 の悪意 ある操作 が可能 :
- ユーザーのセッション Cookie の窃取
- 機密 情報 の窃取
- ウェブページ内容 の改竄
- ユーザーを悪意 のあるサイトにリダイレクト
攻撃タイプ
| タイプ | 説明 |
|---|---|
| Stored XSS | 格納 型 :悪意 のあるスクリプトがサーバーに保存 され、そのページを閲覧 するすべてのユーザーに影響 |
| Reflected XSS | 反射 型 :悪意 のあるスクリプトが URL パラメータを介 して即座 に反射 実行 |
| DOM-based XSS | DOM 型 :クライアントサイドの JavaScript で DOM を操作 する際 に悪意 のあるスクリプトを注入 |
防御対策
1. 入力検証
ユーザー入力 データを厳密 に検証 し、悪意 のある入力 を防止 する。
2. 出力エスケープ
ユーザー入力 データをウェブページに出力 する際 、HTML Entity Encoding などの適切 なエスケープ方法 を使用 して、スクリプトがブラウザで実行 されるのを防止 する。
3. Content Security Policy (CSP)
安全 な HTTP ヘッダーを設定 し、読 み込 み可能 なリソースを制限 して、悪意 のあるスクリプトの実行 を防止 する。
Content-Security-Policy: default-src 'self'; script-src 'self'4. 安全な Cookie 設定
| 属性 | 説明 | 用途 |
|---|---|---|
HttpOnly | JavaScript からの Cookie アクセスを禁止 | XSS によるセッション窃取 を防止 |
Secure | HTTPS 接続 でのみ送信 | 中間者 攻撃 による窃取 を防止 |
SameSite | クロスサイトリクエストの動作 を制御 | CSRF 攻撃 を防止 |
SameSite Cookie 設定
SameSite 属性
は、Cookie のクロスサイトリクエスト動作
を設定
し、CSRF(Cross-Site Request Forgery)攻撃
を防止
するために使用
される。
| 値 | 動作 | 適用 シーン |
|---|---|---|
Strict | 第三者 サイトからの Cookie アクセスを禁止 、同一 サイト内 のみ許可 | 銀行 、通販 サイトなど決済 を扱 うサイト |
Lax | 対象 URL へのリダイレクト GET リクエストで第三者 の Cookie アクセスを許可 、POST リクエストは禁止 | 一般的 なサイトのデフォルト値 |
None | すべてのクロスサイトリクエストで Cookie アクセスを許可
、Secure との併用
が必須 | クロスサイトで Cookie を共有 する必要 があるシーン(SSO など) |
SameSite=None を設定
する場合
は、必
ず Secure 属性
も同時
に設定
する必要
がある。そうしないと Cookie はブラウザに拒否
される。Cookie 設定例
Set-Cookie: session=abc123; HttpOnly; Secure; SameSite=Strict