Secure Steady
HTTP セキュリティヘッダ - セキュリティヘッダ の使い方・オプション・サンプル

HTTP セキュリティヘッダ - セキュリティヘッダ

HTTP レスポンスヘッダでブラウザのセキュリティ機能を有効化する。CSP, HSTS, X-Frame-Options など複数のヘッダを組み合わせて防御層を構築する。

概念図

セキュリティヘッダ diagram

実例

Nginx での主要セキュリティヘッダ設定

bash
# Nginx での設定例
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "DENY" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;

curl でセキュリティヘッダを確認する

bash
# セキュリティヘッダの検証
curl -I https://example.com | grep -i "strict-transport\|x-frame\|x-content-type\|referrer-policy"

主要なセキュリティヘッダ一覧

  • Strict-Transport-Security (HSTS): ブラウザに HTTPS 通信を強制する。中間者攻撃による HTTP ダウングレードを防止

  • X-Content-Type-Options: nosniff を設定して MIME タイプのスニッフィングを防止。意図しないスクリプト実行を防ぐ

  • X-Frame-Options: ページの iframe 埋め込みを制限してクリックジャッキングを防止。DENY または SAMEORIGIN を設定

  • Referrer-Policy: リファラ情報の送信範囲を制御する。strict-origin-when-cross-origin が推奨

  • Permissions-Policy: カメラ、マイク、位置情報などブラウザ API の使用許可を制御する

  • Content-Security-Policy: 読み込み可能なリソースのオリジンを制限する(詳細は CSP のページを参照)

導入のベストプラクティス

  • 段階的な導入: CSP は Content-Security-Policy-Report-Only で動作を確認してから本番適用する
  • securityheaders.com で診断: サイトのセキュリティヘッダ設定状況を無料で診断できる
  • CDN / リバースプロキシでの一括設定: Cloudflare, AWS CloudFront などで全レスポンスにヘッダを追加する
  • HSTS Preload List への登録: hstspreload.org に登録すると、ブラウザが初回アクセスから HTTPS を強制する
  • 定期的な見直し: 新しい脅威やブラウザの仕様変更に合わせてヘッダ設定を更新する

関連トピック