セキュリティヘッダー

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

セキュリティヘッダーは、WebサーバーがHTTPの応答に付けて、ブラウザに備わった防御機能を有効にさせるHTTPヘッダーの総称です。サーバーの設定を足すだけで、アプリケーションのコードを変えずに、守りを1層増やせます。

セキュリティヘッダーが必要な理由

XSS、クリックジャッキング、通信のダウングレード、ファイル種別の誤認といった攻撃は、ブラウザ側の機能で防げるものがあります。ただし、機能は、サーバーが指示を出して初めて働きます。

セキュリティヘッダーは、脆弱性そのものを直すものではなく、被害を抑える補助です。診断ツールが最初に確認する項目でもあり、未設定の指摘が出やすい部分です。

セキュリティヘッダーの仕組み

ヘッダー役割値の例
Strict-Transport-SecurityHTTPSでの接続を強制するmax-age=31536000
Content-Security-Policy読み込み元を制限し、XSSの被害を抑えるdefault-src 'self'
X-Frame-Optionsiframeへの埋め込みを制限するSAMEORIGIN
X-Content-Type-Optionsファイル種別の推測を止めるnosniff
Referrer-Policy参照元URLの送信範囲を決めるstrict-origin-when-cross-origin
Permissions-Policyブラウザ機能の利用を制限するcamera=(), microphone=()

すでに役目を終えたものもあります。X-XSS-Protection は、OWASPが付けないよう勧めています。Expect-CT と Public-Key-Pins も、使いません。逆に、Server や X-Powered-By にバージョン番号が出ている場合は、消すか、簡素にします。

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

開発者ツールの「ネットワーク」タブで、HTML文書の「レスポンスヘッダー」を開きます。コマンドでは、応答ヘッダーをすべて表示できます。

curl -s -D - -o /dev/null https://example.com/

WindowsのPowerShellでは curl.exe -s -D - -o NUL https://example.com/ です。表の6つのうち、どれが返っていないかを見ます。

セキュリティヘッダーの設定例

CSPは、段階的な導入が必要なため、ここには含めていません。CSPの解説の手順で、別に進めます。

Apache(.htaccess)の例です。

<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000" env=HTTPS
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
</IfModule>

nginxの例です。

add_header Strict-Transport-Security "max-age=31536000" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;

WordPress(子テーマのfunctions.php)の例です。

add_action('send_headers', function () {
    header('X-Content-Type-Options: nosniff');
    header('X-Frame-Options: SAMEORIGIN');
    header('Referrer-Policy: strict-origin-when-cross-origin');
    header('Permissions-Policy: camera=(), microphone=(), geolocation=()');
    if (is_ssl()) {
        header('Strict-Transport-Security: max-age=31536000');
    }
});

よくある間違いと注意点

  • nginxでは、location ブロックの中に別の add_header が1つでもあると、上の階層の add_header は引き継がれません。設定後に、代表的なURLで実際の応答を確かめます。
  • always を付けないと、404や500などのエラー応答には、ヘッダーが付きません。
  • WordPressのキャッシュプラグインが、静的なHTMLをPHPを通さずに返している場合、PHPで付けたヘッダーは出ません。サーバー設定で付けます。
  • ヘッダーを付けても、脆弱性は消えません。更新や入力値の処理の修正と、組み合わせて行います。

Webサイト セキュリティチェッカーで確認する

Webサイト セキュリティチェッカーは、上の6つのヘッダーの有無と、値の弱さ、バージョン番号を表に出しているヘッダー、CORSの設定の緩さを診断します。URLを入れるだけで、コマンドなしで一覧できます。

関連用語

関連する用語

サイトの設定を無料で確認する

サイトのURLを入力するだけで、セキュリティヘッダー などの設定状況を診断できます。Webサイト セキュリティチェッカー「Security Checker X」は、登録なしで使えます。

デジタルマーケティング事業部 統括マネージャー

略歴:京都大学情報学研究科知能情報学専攻修士課程修了後、日経大手インターネットショッピングモールの開発部でエンジニアとしてシステム開発・運用に従事。同社新規モバイル事業の立ち上げに開発プロジェクトマネージャー、兼プロダクトマネージャーとして参画。その後、外資系大手製薬メーカーのデジタルマーケティング部門でシニアアソシエイトとして従事した後、2020年にエスライン・テクノロジーズのデジタルマーケティング事業部統括マネージャーに就任。カスタマーファーストでデジタルマーケティングの役立つ情報を日々発信中。

【MALINE】総合デジタルマーケティングツール
【特別価格】Digicert VMC
NEWS
  1. 1

    【NEWS】旅行比較サイト『TRAVEL HUB(トラベルハブ)』サービス提供開始のお知らせ

  2. 2

    オフィス移転のお知らせ

  3. 3

    【MALINE】マリン株式会社設立のお知らせ

  4. 4

    無料で使える「Excel版 一斉メール配信ツール」提供開始のお知らせ ~SMTP設定だけで今すぐメール一括送信~

  5. 5

    中小企業向けDXプラットフォーム『Hirameki 7』SEO/MEO支援オプション提供開始。Hirameki 7ご利用者様の集客効果を最大化!

カレンダーから記事を探す
2026年10月
月 火 水 木 金 土 日
 1234
567891011
12131415161718
19202122232425
262728293031  
SEO検索順位チェッカー
Googleマップ/MEO順位チェックツール
【無料】メールアドレス生存確認ツール
【無料】Excel一斉メール送信ツール
メールアドレス漏洩・流出チェックツール
メールドメインブラックリスト判定ツール
DMARC/SPF/DKIM診断ツール
IPアドレス位置・住所特定ツール
自分のIPアドレス確認ツール
驚愕効果のSEO対策