セキュリティヘッダ(Security Headers)とは HSTS・CSPなど6種の意味、付けないと起きる被害、設定例
セキュリティヘッダは、Webサーバーが応答に付けて、ブラウザに守り方を指示する情報です。 このページでは、よく使う6種と、それで防ぐ攻撃のクリックジャッキングを説明します。 どれも、サーバーの設定に数行を足すだけで付けられます。
| 用語(英語/日本語) | 何の略か | 主に防ぐもの | CWE |
|---|---|---|---|
| HSTS | HTTP Strict Transport Security | 暗号化されていない通信への引き戻し | CWE-319 |
| CSP | Content Security Policy | 埋め込まれた不正なスクリプト | CWE-79 |
| X-Frame-Options | 略語ではない | 他のサイトへの埋め込み | CWE-1021 |
| X-Content-Type-Options | 略語ではない | ファイルの種類の読み違い | 該当の番号を確認できず |
| Referrer-Policy | 略語ではない | 移動先へのURLの漏れ | 該当の番号を確認できず |
| Permissions-Policy | 略語ではない | カメラや位置情報の無断利用 | 該当の番号を確認できず |
| Clickjacking(クリックジャッキング) | 略語ではない | (攻撃の名前) | CWE-1021 |
OWASP Top 10:2025 では、セキュリティヘッダがないことは「A02:2025 Security Misconfiguration(セキュリティ設定の不備)」に含まれます。 OWASP は、送るべきセキュリティヘッダを送っていないサーバーを、この分類の例に挙げています。
セキュリティヘッダ(Security Headers)
- 何の略か 略語ではありません。
- 日本語では 「セキュリティヘッダー」と伸ばして書くこともあります。
- 一言の定義 Webサーバーが応答に付けて、ブラウザに安全な動き方を指示するHTTPヘッダの総称です。
- どんなリスクがあるか 付けていないと、ブラウザは古くて緩い動き方のままページを扱います。その結果、下の各節にある攻撃を止められません。
- 影響を受ける運用 共用サーバーやWordPressの初期設定のまま、サーバーの設定を一度も見直していないサイトです。
- 実際の事例 各ヘッダの節に書きます。
- 分類番号 OWASP Top 10:2025 の A02:2025 です。
HSTS(HTTP Strict Transport Security)
- 何の略か HTTP Strict Transport Security の略です。仕様は RFC 6797 です。
- 日本語では 公的機関が使う定まった訳語は、確認できませんでした。このページでは「HSTS」と呼びます。
- 一言の定義 このサイトにはHTTPSでしか接続しないよう、ブラウザに覚えさせるヘッダです。
- どんなリスクがあるか HSTSがないと、利用者が
http://で入ったときの最初の1回が暗号化されません。公共の無線LANなどでは、その1回を横取りされ、偽の接続先へ誘導されるおそれがあります。 - 影響を受ける運用 HTTPSへの転送(301)だけで済ませているサイトです。ログイン画面や問い合わせフォームがあるサイトは、特に影響が大きくなります。
- 実際の事例 HSTSがないことが原因だと発表された事件は、確認できませんでした。
- 分類番号 CWE-319(Cleartext Transmission of Sensitive Information、重要な情報の平文での送信)です。
CSP(Content Security Policy)
- 何の略か Content Security Policy の略です。W3C が仕様を定めています。
- 日本語では 「コンテンツセキュリティポリシー」とカタカナで書かれることが多い語です。
- 一言の定義 ページが読み込んでよいスクリプトや画像の出どころを、ブラウザに指定するヘッダです。
- どんなリスクがあるか CSPがないと、ページに不正なスクリプトが紛れ込んだとき、ブラウザはそのまま実行します。CSPは、XSS(クロスサイトスクリプティング)の被害を小さくする手段の1つです。
- 影響を受ける運用 プラグインや外部のタグを多く入れているWordPressのサイトです。利用者が文章を書き込める掲示板やコメント欄があるサイトも当てはまります。
- 実際の事例 CSPがないことが原因だと発表された事件は、確認できませんでした。外部スクリプトが改ざんされた事例は、この辞典のサプライチェーン攻撃のページで扱います。
- 分類番号 CSPが被害を小さくする弱点は、CWE-79(クロスサイトスクリプティング)です。
X-Frame-Options
- 何の略か 略語ではありません。仕様は RFC 7034 です。
- 日本語では 英語のまま呼ばれます。
- 一言の定義 自分のページを、他のサイトの枠(iframe)の中に表示させないためのヘッダです。
- どんなリスクがあるか このヘッダがないと、他のサイトに自分のページを透明にして重ねられます。利用者は、気づかないまま自分のページのボタンを押してしまいます(クリックジャッキング)。
- 影響を受ける運用 ログインした利用者がボタン1つで送信や設定変更をできる、会員サイトや管理画面です。
- 実際の事例 クリックジャッキングの節に書きます。
- 分類番号 CWE-1021(Improper Restriction of Rendered UI Layers or Frames、画面の重なりや枠の制限の不備)です。
- 補足 新しい書き方は、CSP の
frame-ancestorsです。両方を付けておくと、古いブラウザでも効きます。
X-Content-Type-Options
- 何の略か 略語ではありません。
- 日本語では 英語のまま呼ばれます。値の
nosniffと合わせて呼ぶことが多い語です。 - 一言の定義 サーバーが伝えたファイルの種類を、ブラウザに推測で変えさせないためのヘッダです。
- どんなリスクがあるか このヘッダがないと、ブラウザが中身を見て種類を推測することがあります。画像として上げられたファイルを、スクリプトとして扱ってしまうおそれがあります。
- 影響を受ける運用 利用者がファイルを上げられるサイトです。上げたファイルを同じドメインから配っているサイトは、特に当てはまります。
- 実際の事例 このヘッダがないことが原因だと発表された事件は、確認できませんでした。
- 分類番号 このヘッダだけに対応する CWE の番号は、確認できませんでした。
Referrer-Policy
- 何の略か 略語ではありません。
- 日本語では 英語のまま呼ばれます。「リファラーポリシー」とカタカナで書くこともあります。
- 一言の定義 別のサイトへ移るとき、元のページのURLをどこまで伝えるかを決めるヘッダです。
- どんなリスクがあるか 何も指定しないと、URLに含まれる番号や検索語が、移動先のサイトに伝わることがあります。パスワード再設定のURLのように、URLそのものが鍵になるページでは、漏れると悪用されるおそれがあります。
- 影響を受ける運用 URLの後ろ(
?の後)に会員番号や注文番号を入れているサイトです。外部の広告や解析のタグを入れているサイトも当てはまります。 - 実際の事例 このヘッダがないことが原因だと発表された事件は、確認できませんでした。
- 分類番号 このヘッダだけに対応する CWE の番号は、確認できませんでした。
- 補足 ヘッダの名前は「Referrer」と綴ります。古い HTTP の仕様で、送られるURLのヘッダは「Referer」と綴られています。名前が違うので、設定するときは綴りに気をつけます。
Permissions-Policy
- 何の略か 略語ではありません。以前は Feature-Policy という名前でした。
- 日本語では 英語のまま呼ばれます。
- 一言の定義 カメラ、マイク、位置情報などのブラウザの機能を、ページの中で使わせるかを決めるヘッダです。
- どんなリスクがあるか 指定しないと、ページに埋め込んだ外部の広告や部品が、これらの機能を使う許可を利用者に求められます。
- 影響を受ける運用 外部の広告、地図、動画などをページに埋め込んでいるサイトです。
- 実際の事例 このヘッダがないことが原因だと発表された事件は、確認できませんでした。
- 分類番号 このヘッダだけに対応する CWE の番号は、確認できませんでした。
クリックジャッキング(Clickjacking)
- 何の略か 略語ではありません。「クリック」と「乗っ取り(hijacking)」を合わせた造語です。
- 日本語では 「クリックジャッキング」とカタカナで書きます。
- 一言の定義 透明にした別のページを重ね、利用者に意図しないボタンを押させる攻撃です。
- どんなリスクがあるか 利用者がログインしたままなら、投稿、設定の変更、購入などを本人の操作として実行されます。
- 影響を受ける運用 X-Frame-Options も CSP の
frame-ancestorsも付けていない会員サイトです。 - 実際の事例 2009年2月、Twitter で「Don't Click」と書いたボタンを押させる攻撃が広がりました。押した人のアカウントから、同じ文が勝手に投稿されました。投稿を見た人が押すと、さらに広がる仕組みでした。 Twitter は枠を外す対策を入れましたが、数時間のうちに対策をかわす形に書き換えられました(The Register、2009-02-13 の報道)。
- 分類番号 CWE-1021 です。
自分のサイトで確かめる方法
外から確かめられるのは、自分が管理するサイトだけにします。
-
パソコンのコマンド画面で、次のように打ちます。
example.comは自分のサイトに置き換えます。curl -I https://example.com/ -
返ってきた行に、上の6種のヘッダの名前があるかを見ます。
- コマンドを使わない場合は、ブラウザの開発者ツールを開きます。「ネットワーク」タブでページを選び、「レスポンスヘッダー」を見ます。
プロンプト駅の「レスポンスヘッダの点検」に、curl -I の結果を貼ると、足りないヘッダと設定例をAIに出させる文を作れます。
直し方の要点
次の値は、このサイト(mujinkp.co.jp)で実際に付けている値です。 CSP は、Google タグマネージャーなどを止めないよう、スクリプトの出どころを絞っていません。
nginx の場合
HTTPS の server {} の中に書きます。
add_header Strict-Transport-Security "max-age=31536000" always;
add_header Content-Security-Policy "frame-ancestors 'self'; base-uri 'self'; object-src 'none'; form-action 'self'; upgrade-insecure-requests" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=()" always;
nginx は、location の中に add_header が1つでもあると、server の add_header を引き継ぎません。
その場合は、その location の中にも同じ行を書きます。
Apache の場合
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
付けるときの注意
- HSTS の
includeSubDomainsとpreloadは、すべてのサブドメインがHTTPSで動くと確かめてから付けます。preloadは、取り消すのに時間がかかります。 - CSP は、いきなり厳しくしないようにします。まず
Content-Security-Policy-Report-Onlyで違反を記録だけさせ、違反が出ないと確かめてから切り替えます。
出典
- OWASP「A02:2025 Security Misconfiguration」(2026-10-27 取得) https://owasp.org/Top10/2025/A02_2025-Security_Misconfiguration/
- MITRE「CWE-1021: Improper Restriction of Rendered UI Layers or Frames」(2026-10-27 取得) https://cwe.mitre.org/data/definitions/1021.html
- MITRE「CWE-319: Cleartext Transmission of Sensitive Information」 https://cwe.mitre.org/data/definitions/319.html
- MITRE「CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')」 https://cwe.mitre.org/data/definitions/79.html
- IETF「RFC 6797 HTTP Strict Transport Security (HSTS)」 https://www.rfc-editor.org/rfc/rfc6797
- IETF「RFC 7034 HTTP Header Field X-Frame-Options」 https://www.rfc-editor.org/rfc/rfc7034
- W3C「Content Security Policy Level 3」 https://www.w3.org/TR/CSP3/
- W3C「Referrer Policy」 https://www.w3.org/TR/referrer-policy/
- W3C「Permissions Policy」 https://www.w3.org/TR/permissions-policy/
- The Register「Twitter attack exposes awesome power of clickjacking」(2009-02-13) https://www.theregister.com/security/2009/02/13/twitter-attack-exposes-awesome-power-of-clickjacking/569788
関連するページ
- Webセキュリティ用語辞典の索引
- 脆弱性の番号と深刻度(CVE・CWE・CVSS)
- Webサイトセキュリティ診断では、これらのヘッダを外から点検し、直し方を添えて報告します。
下記フォームより直接ご相談・お問い合わせいただけます。
内容を確認のうえ、担当より折り返しご連絡いたします。