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

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

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

1. Content-Security-Policy (CSP)

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

CSP が防御する攻撃

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

CSP の運用

CSP では、リソースの種類ごとに許可するソースを細かく指定できます。たとえば「スクリプトは自サイトのみ許可し、スタイルシートは自サイトと Google Fonts のみ許可する」といった制御が可能です。CSP の設計や運用を体系的に学びたい方には、Web セキュリティの実践入門書が参考になります。

nonce (一回限りのトークン) やhashを活用すれば、インラインスクリプトを安全に許可することもできます。IP 確認さんでは、各ページに 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 も併用するのが望ましいでしょう。古い Web サイトが崩れて見える理由でも触れているように、Web 標準の進化に伴い古い仕様との互換性維持は常に課題となっています。HTTP ヘッダーの設定方法を網羅的に把握するには、HTTP プロトコルの解説書が役立ちます。

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 を送信

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

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

まとめ

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

セキュリティヘッダーと合わせて、HTTPS/TLS の仕組みを理解しておくと、Web 通信の安全性をより深く把握できます。Cookie トラッキングの対策や、ブラウザフィンガープリントの防止も、ブラウザセキュリティの重要な要素です。

この記事の関連用語

TLS/SSL インターネット通信を暗号化するプロトコル。SSL は旧称で、現在は TLS が標準。Web サイトの HTTPS 接続、メール送受信、VPN 通信など幅広く利用… HTTPS HTTP に TLS による暗号化を追加したプロトコル。ブラウザと Web サーバー間の通信を暗号化し、盗聴や改ざんを防止する。アドレスバーの鍵アイコンで確認で… デジタル証明書 Web サイトやサーバーの身元を証明する電子的な証明書。認証局 (CA) が発行し、公開鍵とドメイン所有者の情報を紐付ける。ブラウザは証明書を検証して HTTP… セキュリティヘッダー Web サーバーがブラウザに送信する HTTP レスポンスヘッダーのうち、セキュリティポリシーを指示するもの。Content-Security-Policy (… XSS (クロスサイトスクリプティング) Web アプリケーションの脆弱性を悪用し、悪意のあるスクリプトをユーザーのブラウザ上で実行させる攻撃。反射型 (URL パラメータ経由)、格納型 (データベース…