HTTP セキュリティヘッダー入門:Web サイトを守る 5 つの重要ヘッダー

HTTP セキュリティヘッダーとは

HTTP セキュリティヘッダーは、Web サーバーがブラウザに送信する特殊な HTTP レスポンスヘッダーです。クロスサイトスクリプティング (XSS)、クリックジャッキング、中間者攻撃といった一般的な Web 攻撃からユーザーを保護するための指示を、ブラウザに伝える役割を担います。

適切なセキュリティヘッダーの設定は、比較的少ない労力で Web サイトの安全性を大幅に向上させる、費用対効果の高い対策です。確認さんのセキュリティスコア機能では、接続先のセキュリティヘッダー設定状況を確認できます。

1. Content-Security-Policy (CSP)

CSP は、現代の Web セキュリティにおいて最も重要なヘッダーの一つです。Web ページが読み込み可能なリソース (スクリプト、スタイルシート、画像など) のソースを厳密に制限します。

CSP が防御する攻撃

  • クロスサイトスクリプティング (XSS):悪意あるスクリプトの実行を阻止
  • データインジェクション攻撃:不正なリソースの読み込みを遮断
  • クリックジャッキング:frame や iframe の制御による防御

CSP の運用

CSP では、リソースの種類ごとに許可するソースを細かく指定できます。たとえば「スクリプトは自サイトのみ許可し、スタイルシートは自サイトと Google Fonts のみ許可する」といった制御が可能です。

nonce (一回限りのトークン) やhashを活用すれば、インラインスクリプトを安全に許可することもできます。確認さんでは、各ページに nonce 属性を付与して CSP を適用しています。

2. Strict-Transport-Security (HSTS)

HSTS は、ブラウザに対して「このサイトには常に HTTPS でアクセスせよ」と指示するヘッダーです。

HSTS が防御する攻撃

  • SSL ストリッピング攻撃:HTTP から HTTPS へのリダイレクトを悪用した中間者攻撃
  • プロトコルダウングレード攻撃:暗号化されていない HTTP 接続への誘導

HSTS の動作原理

HSTS ヘッダーを受信したブラウザは、指定された期間 (max-age) にわたり、そのドメインへのアクセスを自動的に HTTPS に変換します。includeSubDomainsディレクティブを付加すればサブドメインにも適用され、preloadを設定して HSTS プリロードリストに登録すれば、初回アクセス時から HTTPS が強制されます。

3. X-Frame-Options

Web ページが<iframe><frame>内に埋め込まれることを制御するヘッダーです。主にクリックジャッキング——透明な iframe を重ねてユーザーに意図しない操作をさせる攻撃——を防御します。

  • DENY:あらゆるフレーム内表示を禁止
  • SAMEORIGIN:同一オリジンからのフレーム内表示のみ許可

現在は CSP のframe-ancestorsディレクティブがより柔軟な代替手段として推奨されていますが、古いブラウザとの互換性を考慮して X-Frame-Options も併用するのが望ましいでしょう。

4. X-Content-Type-Options

ブラウザの MIME タイプスニッフィング——Content-Type ヘッダーを無視してコンテンツの種類を推測する動作——を抑止するヘッダーです。

  • MIME タイプ混同攻撃:テキストファイルをスクリプトとして実行させる攻撃を防止
  • ドライブバイダウンロード:悪意あるファイルを安全なファイルに偽装する攻撃を防止

設定値はnosniffの一択です。これにより、ブラウザは Content-Type で宣言された MIME タイプを厳密に適用します。

5. Referrer-Policy

ページ遷移時に Referer ヘッダーへどの程度の情報を含めるかを制御するヘッダーです。URL に含まれるセッション ID や検索クエリなどの機密情報が外部サイトに漏洩するのを防ぎます。

  • no-referrer:Referer ヘッダーを一切送信しない
  • strict-origin-when-cross-origin:同一オリジンには完全な URL を、クロスオリジンにはオリジンのみを送信 (推奨)
  • same-origin:同一オリジンにのみ Referer を送信

セキュリティヘッダーの確認方法

  • 確認さんのセキュリティスコアで、主要なセキュリティヘッダーの設定状況を一覧確認
  • ブラウザの開発者ツール (F12) のネットワークタブでレスポンスヘッダーを直接確認
  • コマンドラインでcurl -I https://example.comを実行

まとめ

HTTP セキュリティヘッダーは、Web サイトのセキュリティを底上げする基本にして強力な対策です。とりわけ CSP と HSTS は、現代の Web セキュリティにおいて必須の存在といえます。サイト運営者はこれらを適切に設定し、ユーザーとしてはアクセス先の安全性を確認さんで定期的にチェックすることをおすすめします。