Web セキュリティヘッダとセキュアコーディング

CSP・HSTS・HttpOnly/Secure/SameSite Cookie・SAST/DAST/SCA を整理。XSS/CSRF の実装対策。

Web セキュリティヘッダは AP科目Aと科目B問1で頻出。CSP・HSTS・HttpOnly Cookie・X-Frame-Options など実装側の対策を押さえます。

鳴海 理央(普段) 鳴海 理央

主要なセキュリティヘッダは6つあります。
CSP (Content-Security-Policy) は XSS やデータ流出への対策、HSTS は HTTPS を強制するものですね。

鳴海 理央(普段) 鳴海 理央

残りは X-Frame-Options (クリックジャッキング対策) と、Cookie 属性の HttpOnly (JS からのアクセス禁止)・Secure (HTTPS 限定)・SameSite (CSRF 対策) です。

砂原 ニコ(普段) 砂原 ニコ

CSP って具体的に何を防いでくれるの?

緒方 ナオミ 先生(笑顔) 緒方 ナオミ 先生

CSP は『ブラウザに許可するリソースの読み込み元 (script/img/style など) を限定する』ヘッダなのよ。

緒方 ナオミ 先生(普段) 緒方 ナオミ 先生

XSS 攻撃で外部スクリプトを差し込まれても、許可リストにないものは実行されないの。
例えば `default-src 'self'; script-src 'self' https://trusted.cdn.com` のように指定するわ。

藤咲 まりあ(普段) 藤咲 まりあ

HttpOnly と Secure Cookie って、どう違うのぉ…?

鳴海 理央(普段) 鳴海 理央

HttpOnly は JavaScript の document.cookie からアクセスできなくする属性で (XSS で盗まれない)、Secure は HTTPS 接続時のみ送信する属性です (盗聴されない)。

鳴海 理央(普段) 鳴海 理央

両方セットするのが推奨です。
さらに SameSite=Strict/Lax で CSRF 対策も追加できます。

緒方 ナオミ 先生(普段) 緒方 ナオミ 先生

AP では『各ヘッダの役割』『対応する攻撃の種類』『安全な Cookie 設定の組合せ』が頻出よ。
実装側のセキュリティ対策の代表として、科目B問1 で記述問題になることもあるわ。

砂原 ニコ(普段) 砂原 ニコ

セキュアコーディングの観点でも、なんかポイントある?

鳴海 理央(普段) 鳴海 理央

OWASP Secure Coding Practices や CWE Top 25 に基づき、入力検証・出力エンコーディング・認証/認可・暗号化・ログ・監査の各層で対策します。

鳴海 理央(普段) 鳴海 理央

実装後は SAST (静的解析)・DAST (動的解析)・SCA (依存ライブラリ脆弱性スキャン) を CI/CD に組み込むのが標準ですね。

📝 過去問サンプル (記述設問)

A社のWebアプリで、ユーザのセッション ID を JavaScript から取得できる脆弱性が指摘された。Cookie 設定で改善する方策を、40字以内で述べよ。

【模範解答 (例)】
セッション Cookie に HttpOnly 属性を付与し
JavaScript からのアクセスを禁止する。(40字)

【減点ポイント】
× 「JavaScript を無効化」 → 機能停止になる過剰対応
× 属性名 (HttpOnly) が不明確
× セキュリティ対策の主体が不明

確認クイズ

Web セキュリティ対策で、XSS (クロスサイトスクリプティング) の影響を限定する目的で設定するブラウザヘッダはどれか。

  1. Strict-Transport-Security (HSTS)
  2. Content-Security-Policy (CSP)
  3. X-Frame-Options
  4. Cache-Control
こたえを見る

正解: 2. Content-Security-Policy (CSP)

CSP は XSS の影響を軽減する代表的なヘッダ。許可された source からのみスクリプトを実行可能にする。HSTS は HTTPS 強制、X-Frame-Options はクリックジャッキング対策、Cache-Control はキャッシュ制御で目的が異なる。

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。