HTTP セキュリティヘッダ - セキュリティヘッダ
HTTP レスポンスヘッダでブラウザのセキュリティ機能を有効化する。CSP, HSTS, X-Frame-Options など複数のヘッダを組み合わせて防御層を構築する。
概念図
実例
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 を強制する - 定期的な見直し: 新しい脅威やブラウザの仕様変更に合わせてヘッダ設定を更新する
関連トピック
XSS(クロスサイトスクリプティング)- 悪意あるスクリプトを Web ページに注入する攻撃手法。反射型・格納型・DOM Based の 3 種類がある。 Content Security Policy (CSP)- ブラウザが読み込めるリソースの種類やオリジンを制限する HTTP ヘッダ。XSS の被害を大幅に軽減できる。 クリックジャッキング- 透明な iframe を重ねて、ユーザーに意図しないクリックをさせる攻撃。 CORS(オリジン間リソース共有)- 異なるオリジン間での HTTP リクエストを制御する仕組み。同一オリジンポリシーを緩和しつつ、不正なアクセスを防ぐ。 HTTPS の導入- HTTP に TLS を組み合わせた暗号化通信プロトコル。盗聴・改ざん・なりすましを防ぐ Web セキュリティの基盤。 