0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HTTPレスポンスヘッダ

Last updated at Posted at 2025-08-21

概要

セキュリティを勉強するにあたり、HTTPレスポンスヘッダにはどんな種類があるのか、どう設定すればいいかをまとめてみた。

ヘッダ 目的 推奨設定 その他設定
X-Content-Type-Options ブラウザに対するMIMEタイプ自動推測(MIMEスニッフィング)の無効化 nosniff なし
X-XSS-Protection 一部の古いブラウザでは、受信したHTML内の危険なスクリプトを検知して自動的にブロックする機能がある。
このヘッダを設定することで、このフィルターの挙動を制御できる。
最新ブラウザでは効果がなく、CSPの使用が推奨されている。
1; mode=block(XSSフィルターを有効化し、検知時はページのレンダリングをブロック) 0(XSSフィルターを無効化)
1(XSSフィルターを有効化し、検知時はブラウザがサニタイズして表示)
Content-Security-Policy (CSP)
詳細はこちら
スクリプト・スタイル・iframe制御 例: default-src 'self'; script-src 'self'; report-uri, report-to
X-Frame-Options iframe表示制御
主にクリックジャッキング防止目的で使用される。
※近年は、Content-Security-Policy: frame-ancestoresのほうが推奨されている。
DENY / SAMEORIGIN ALLOW-FROM {URL}(※非推奨。主要ブラウザでは非対応。)
Content-Security-Policy: frame-ancestors iframe制御 'none' / 'self' 複数ドメイン指定可
Strict-Transport-Security (HSTS) HTTPS強制
※初回アクセスはHTTPSの必要あり
※開発環境で有効にするとHTTPでテストできなくなる
preloadを使用すると取り消しが難しい
max-age=31536000;(1年間)
includeSubDomains;(サブドメも含める)
preload(ブラウザのHSTS Preload Listに登録可能にする)
max-age=86400(短期)
Public-Key-Pins
※非推奨・廃止
TLS証明書固定 主要ブラウザは非推奨・廃止 pin-sha256="..."
Referrer-Policy
詳細はこちら
リファラー情報制御 strict-origin-when-cross-origin no-referrer, same-origin, origin-when-cross-origin
Permissions-Policy ブラウザ機能制御。カメラやマイク、位置情報などの無断利用を防ぐ目的で使用される。比較的新しいセキュリティ関連のヘッダ 必要機能のみ許可 geolocation=(), microphone=()
Expect-CT 証明書透明性チェック
現在は主要ブラウザでCTが強制されているため、本ヘッダは役割を終えて廃止方向。古い設定のヘッダが残っていると指摘ポイントになることもあり。
enforce; max-age=86400 enforce, report-only
Cache-Control キャッシュ制御 no-store(一切キャッシュに保存させない),
no-cache(キャッシュ補保存させるが利用前にサーバ側に必ず再検証),
private(ブラウザ個人キャッシュはOK,CDNなど共有プロキシにはキャッシュさせない),
must-revalidate(有効期限切れキャッシュは再検証必須)
max-age=0(キャッシュは保存できるが、使う前に必ずサーバに再検証必須),
public(CDNなどの共有キャッシュでもキャッシュ可能) など
Expires キャッシュ期限 0
キャッシュ無効で即時サーバ取得。
過去日時も可。キャッシュ無効で即時サーバ取得。
Pragma HTTP/1.0互換キャッシュ制御 no-cache なし
Access-Control-Allow-Origin クロスオリジン許可 必要なドメインのみ https://example.com(特定オリジンのみ許可),
*(どのオリジンでも許可する設定。認証後ページで*の設定だと脆弱性につながる可能性あり)、設定なし(クロスオリジンのアクセスは全て拒否)
Access-Control-Allow-Methods 許可HTTPメソッド 必要なメソッドのみ GET, POST, OPTIONS, PUT, DELETE など
Access-Control-Allow-Headers 許可ヘッダ 必要なヘッダのみ Authorization, Content-Type, ワイルドカード * も可
Access-Control-Allow-Credentials Cookie付き許可 必要な場合のみ true
Origin(※リクエストヘッダ) リクエスト元を示す 自サイトのみ
Access-Control-Request-Method(※リクエストヘッダ) プリフライト用 必要なメソッドのみ PUT, 複数可
Access-Control-Request-Headers(※リクエストヘッダ) プリフライト用 必要なヘッダのみ Authorization, Content-Type
Server サーバ情報非表示 空 / カスタム
X-Powered-By 技術スタック非表示 削除
Cross-Origin-Embedder-Policy (COEP) クロスオリジン埋め込み制御 require-corp unsafe-none
Cross-Origin-Opener-Policy (COOP) ウィンドウ分離 same-origin same-origin-allow-popups
Cross-Origin-Resource-Policy (CORP) クロスオリジンリソース制御 same-origin same-origin, cross-origin
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?