セキュリティヘッダーと​TLSの​設定で​ホームページの​診断​A+を​取得した​手順

本文

エレノア代表の​豊島と​申します。

エレノアの​ホームページは、2026年9月30日に​リニューアルいたしました。​公開後に​サイトの​設定を​見直したところ、​ブラウザに​安全上の​扱いを​指示する​「セキュリティヘッダー」は​2種類しか​設定しておらず、​通信の​暗号化にも​古い方式が​使える​状態であることが​判明いたしました。

そこで、2026年10月1日に​6種類の​セキュリティヘッダーを​追加し、​通信の​暗号化を​TLS 1.2以上に​限定いたしました。​同日に​トップページを​計測した​結果、​無料の​診断サービスである​MDN HTTP Observatoryでは​A+(130点)、securityheaders.comと​SSL Labsでも​A+の​評価となりました。

本記事では、​各設定の​役割と、​ページの​表示や​問い合わせ​フォームを​止めずに​導入した​手順を​ご紹介いたします。​ホームページの​安全対策の​見直しを​ご検討中の​皆様の​ご参考になれば​幸いです。

本記事の​内容

  • 3つの​診断サービスでの​計測結果
  • エレノアが​設定した​8種類の​セキュリティヘッダーと、​通信の​暗号化の​設定
  • CSP(コンテンツセキュリティ​ポリシー)を、​表示を​止めずに​導入した​手順

セキュリティ診断の​結果

2026年10月1日の​計測で、​エレノアの​トップページ​(eleanor-dev.com)は、MDN HTTP Observatoryで​A+(130点)、securityheaders.comと​SSL Labsで​A+の​評価となりました。

計測の​時刻は​日本時間で、MDN HTTP Observatoryと​securityheaders.comは​セキュリティヘッダーを​追加した​後の​13時57分、SSL Labsは​通信の​暗号化の​設定を​変更した​後の​14時47分です。

診断サービスごとの​結果

診断サービス確認する​内容結果
MDN HTTP Observatory(Mozilla)セキュリティ​に関する​12項目の​試験A+(130点、12項目すべて​合格)
securityheaders.com(Snyk)主要な​6種類の​セキュリティヘッダーの​設定A+(6種類すべてを​確認)
SSL Labs(Qualys)通信の​暗号化​(HTTPS)の​設定と、​既知の​脆弱性A+(TLS 1.2と​1.3のみに​対応、​診断の​対象の​脆弱性に​該当なし)
PageSpeed Insights(Google)パフォーマンス・​ユーザー補助・おすすめの​方法・​SEOの​4分類と、​エージェントによる​ブラウジングモバイルと​PCの​4分類が​100、​エージェントによる​ブラウジングは​3項目すべて​合格

MDN HTTP Observatoryの​点数は、100点を​基準に、​試験の​結果に​応じて​加点と​減点を​行う方式です。​エレノアの​サイトは、COOP(+10点)、CORP(+10点)、Referrer-Policy(+5点)、CSPの​frame-ancestors(+5点)の​設定で​加点され、130点となりました。

PageSpeed Insightsの​点数は、​セキュリティヘッダーを​追加する​前と​同じく、​モバイルと​PCの​両方で​満点を​維持しております。

評価について

上記は、2026年10月1日に​エレノアの​トップページを​計測した​結果です。​診断サービスの​評価は、​採点の​基準の​改定などによって​変わることがございます。​また、​セキュリティヘッダーと​通信の​暗号化の​設定は、​特定の​種類の​攻撃の​危険を​減らすためのものであり、​これだけで​サイトに​関わるすべての​危険を​防げるものではございません。

エレノアが​設定した​8種類の​セキュリティヘッダー

エレノアの​サイトでは、​以前から​設定していた​2種類に​6種類を​加え、​合計8種類の​セキュリティヘッダーをすべての​ページに​設定しております。

セキュリティヘッダーは、Webサーバーが​ページと​一緒に​ブラウザへ​送る指示です。​ブラウザは、​この​指示​に従って、​接続の​方法や​読み込んでよい​内容を​判断します。​エレノアの​サイトでは、​配信の​入口にある​プログラム​(Cloudflare Workers)で、​各ページに​ヘッダーを​付けております。​設定する​ヘッダーは、OWASP(Webアプリケーションの​セキュリティに​取り組む国際的な​非営利団体)の​Secure Headers Projectと、MDN HTTP Observatoryの​試験と​採点の​基準を​参考に​選定いたしました。

設定した​ヘッダーの​一覧

ヘッダー役割エレノアの​設定
Strict-Transport-Security(HSTS)常に​httpsで​接続させる期間1年、​サブドメインを​含む​(今回追加)
Content-Security-Policy(CSP)読み込みと​実行を​許可する​内容を​限定するstrict CSP(今回追加)
X-Frame-Options他の​サイトの​枠​(iframe)への​埋め込みを​禁止するDENY(今回追加)
Permissions-Policy使用しない​端末の​機能を​止める8つの​機能を​停止​(今回追加)
Cross-Origin-Opener-Policy(COOP)他の​サイトの​ウィンドウから、​ページを​操作できないようにするsame-origin(今回追加)
Cross-Origin-Resource-Policy(CORP)他の​サイトが​ページを​読み込めないようにするページ​(HTML)に​same-origin(今回追加)
X-Content-Type-Optionsファイルの​種類の​推測を​止めるnosniff(以前から​設定)
Referrer-Policy他の​サイトへ​送る参照元の​情報を​絞るstrict-origin-when-cross-origin(以前から​設定)

HTTPSでの​接続の​強制​(HSTS)

HSTSは、​一度サイトを​訪れた​ブラウザ​に対して、​以後は​必ず​httpsで​接続するよう​指示する​ヘッダーです。httpでの​接続を​経由しないため、​通信の​途中で​内容を​読み取られたり​書き換えられたりする​危険を​減らすことができます。

エレノアの​サイトでは、​期間を​1年とし、​サブドメインも​対象に​含めております。​サブドメインを​含める​前に、​すべての​サブドメインが​httpsで​配信されていることを​確認いたしました。

なお、HSTSには、​ドメインを​ブラウザに​組み込まれた​一覧に​登録するための​「preload」という​指定もございます。​登録すると、​取り消しが​利用者の​ブラウザに​反映されるまでに​数か​月かかるため、​今回は​付けておりません。

端末の​機能の​制限​(Permissions-Policy)

Permissions-Policyは、​ページで​使用できる​端末の​機能を​指定する​ヘッダーです。​エレノアの​サイトでは、​カメラ、​マイク、​位置情報、​加速度センサー、​ジャイロスコープ、​磁気センサー、​ブラウザの​決済機能、USB機器の​8つの​機能を、​使用しない​設定にしております。

使わない​機能を​止めておくことで、​万一、​意図しない​スクリプトが​読み込まれた​場合も、​これらの​機能は​使われません。

埋め込みと​別の​ウィンドウからの​保護​(X-Frame-Options・​COOP・​CORP)

X-Frame-Optionsは、​他の​サイトが​エレノアの​ページを​枠​(iframe)に​埋め込むことを​禁止する​ヘッダーです。​透明にした​ページを​重ねて、​利用者に​意図しない​操作をさせる​「クリックジャッキング」という​攻撃への​対策です。CSPの​frame-ancestorsという​指定でも、​同じ制限を​掛けております。

COOPは、​他の​サイトの​ウィンドウから​エレノアの​ページを​操作できないようにする​ヘッダーです。CORPは、​他の​サイトが​エレノアの​ページ​(HTML)を​読み込むことを​禁止します。​画像などは​他の​サイトから​参照されることがあるため、CORPの​対象外としております。

CSP(コンテンツセキュリティ​ポリシー)の​設定方法

CSPは、Googleが​推奨する​「strict CSP」の​方式で​設定いたしました。

CSPは、​ページが​読み込んでよい​スクリプトや​画像、​データを​送ってよい​先などを、​ブラウザに​指示する​ヘッダーです。​悪意のある​第三者が​ページに​スクリプトを​埋め込む攻撃​(クロスサイトスクリプ​ティング、XSS)を​受けた​場合も、CSPで​許可していない​スクリプトは​ブラウザが​実行しないため、​被害を​抑えることができます。

strict CSPの​仕組み

strict CSPでは、​実行してよい​スクリプトを、​スクリプトの​中身から​計算した​ハッシュ​(SHA-256)で​指定します。​ハッシュは​中身が​1文字でも​変わると​別の​値になるため、​ページに​後から​埋め込まれた​スクリプトは、​ハッシュが​一致せず​実行されません。

あわせて​指定している'strict-dynamic'は、​ハッシュで​許可した​スクリプトが​読み込む​スクリプトにも、​実行を​許可する​指定です。​この​方式では、HTMLに​直接書いた​外部の​スクリプトは​実行されません。​そのため、​問い合わせ​フォームの​迷惑送信対策​(Cloudflare Turnstile)は、​ハッシュで​許可した​スクリプトから​読み込む形に​変更いたしました。

スクリプトには、CSPの​効果を​弱める'unsafe-inline'(ページ内の​スクリプトをすべて​許可する​指定)と'unsafe-eval'(文字列を​スクリプトとして​実行する​機能を​許可する​指定)を​使用しておりません。

読み込みを​許可している​内容

対象許可している​内容
スクリプトハッシュで​許可した​3種類の​スクリプトと、​それらが​読み込む​スクリプト
スタイル​(CSS)自サイトの​CSSと、​ページ内に​記述した​CSS
画像・​フォント自サイトの​ファイルのみ
通信自サイト、​問い合わせの​受け口、​迷惑送信対策の​サービス
フォームの​送信先自サイトと​問い合わせの​受け口
埋め込む枠​(iframe)迷惑送信対策の​サービスのみ
他の​サイトへの​埋め込み禁止
<base>要素・<object>要素禁止

スタイルについては、'unsafe-inline'を​許可しております。​エレノアの​サイトは、​表示を​速くするために​CSSを​各ページに​埋め込んでおり、​要素に​直接書いた​スタイルも​使用しているためです。​スタイルは、​スクリプトと​異なり、​プログラムとして​実行されることはございません。strict CSPも、​スクリプトを​対象とした​方式です。

ハッシュの​自動計算と​サイトの​生成時の​検査

エレノアの​サイトは、​公開の​前に​HTMLをまとめて​生成する​方式​(静的サイト)で​制作しております。​生成のたびに​全ページの​スクリプトの​ハッシュを​自動で​計算し、CSPを​組み立てる​仕組みを​設けました。2026年10月1日時点では、24ページで​使われている​3種類の​スクリプトが​対象です。​スクリプトを​修正しても、​次の​生成で​ハッシュが​計算し直されるため、CSPを​手作業で​更新する​必要はございません。

あわせて、CSPの​下で​動かなくなる​書き方が​HTMLに​含まれている​場合は、​生成を​止めて、​公開されないようにしております。​対象は​次のとおりです。

  • HTMLに​直接書いた​外部の​スクリプトの​読み込み
  • onclickなどの​属性に​書いた​スクリプト
  • javascript:で​始まる​リンク
  • 外部の​サイトの​画像・​フォント・​CSSの​読み込み

表示を​止めずに​CSPを​導入した​手順

CSPは、​違反を​報告するだけの​モードで​公開して​確認した​後、​実際に​読み込みを​止める​モードに​切り替えました。

CSPの​指定に​漏れがあると、​必要な​スクリプトまで​止まり、​メニューが​開かない、​フォームを​送信できないといった​不具合が​起こります。​違反を​報告するだけの​モード​(Content-Security-Policy-Report-Only)では、​ブラウザは​違反を​記録するだけで、​読み込みは​止めません。​利用者への​影響を​出さずに、​設定の​誤りを​確認できます。

エレノアでは、​次の​手順で​導入いたしました。

  • 1. 公開の​前に、​手元の​環境で​全24ページを、​画面を​表示せずに​動かす​Chrome(ヘッドレス​Chrome)で​開き、​違反を​記録する​仕組みで​確認​(違反は​0件)
  • 2. 違反を​報告するだけの​モードで​公開し、​本番の​ページでも​違反がないことを​確認
  • 3. 問い合わせ​フォームの​迷惑送信対策が、​通常の​Chromeで​確認を​完了できることを​確認
  • 4. 読み込みを​止める​モード​(Content-Security-Policy)に​切り替え
  • 5. 切り替えた​後に、​違反が​0件であることと、​問い合わせ​フォームが​動作することを​再確認

通信の​暗号化​(TLS)の​設定と​SSL Labsの​評価

通信の​暗号化は、​古い方式である​TLS 1.0と​TLS 1.1の​利用を​停止して​TLS 1.2以上に​限定し、SSL Labsで​A+の​評価となりました。

TLS(Transport Layer Security)は、​ブラウザと​Webサーバーの​間の​通信を​暗号化する​仕組みで、httpsで​始まる​ページの​通信に​使われています。SSL Labs(Qualysが​無料で​提供している​診断サービス)は、​証明書、​対応している​暗号化の​方式、​既知の​脆弱性などを​確認し、HTTPSの​設定を​A+から​Fの​段階で​評価します。

SSL Labsの​評価が​Bだった​原因

設定を​見直す前の​2026年10月1日の​計測では、SSL Labsの​評価は​Bでした。​原因は、1999年に​定められた​TLS 1.0と、2006年に​定められた​TLS 1.1が、​まだ​使える​設定になっていたことです。

この​2つの​方式には​弱点が​知られており、2021年3月に​公開された​RFC 8996で、​使用しないことが​求められております。SSL Labsは、TLS 1.0または​TLS 1.1が​使える​場合、​評価を​Bまでに​抑えます。

TLSの​最低バージョンの​変更

配信に​使用している​Cloudflareの​管理画面で、​受け付ける​TLSの​最低バージョン​(Minimum TLS Version)を、TLS 1.0から​TLS 1.2に​変更いたしました。​現在は、TLS 1.2(2008年)と​TLS 1.3(2018年)でのみ​接続を​受け付けております。

変更後、TLS 1.0と​TLS 1.1では​接続できないことを​手元の​環境で​確認したうえで、SSL Labsで​再度診断いたしました。​診断の​対象となった​4つの​接続先​(IPアドレス)のすべてで、A+の​評価となりました。

SSL Labsで​A+の​評価を​得るには、TLSの​設定に​加えて、​前述の​HSTSを​長い期間で​設定していることも​条件の​一つとされております。​エレノアの​サイトでは、HSTSの​期間を​1年としております。

閲覧できなくなる​端末と​ブラウザ

SSL Labsは、​代表的な​端末と​ブラウザの​組み合わせ​68種類で、​接続できるかどうかを​試します。​変更後の​診断では​52種類が​接続でき、​接続できなかった​16種類は、Android 4.3以前の​標準ブラウザ、Internet Explorer 10以前、OS X 10.8以前の​Safariなど、​おおむね​2013年ごろまでに​提供されていたものでした。

Chrome、Firefox、Edgeなどの​現在の​主な​ブラウザは、2020年に​TLS 1.0と​TLS 1.1の​対応を​終了しております。​そのため、​通常の​閲覧環境への​影響はないと​判断いたしました。

PageSpeed Insightsの​参考項目と​今後の​課題

PageSpeed Insightsの​「おすすめの​方法」には、​点数に​含まれない​参考の​項目として、​セキュリティの​設定を​確認する​項目がございます。​ヘッダーを​追加した​後の​計測では、​クリックジャッキングの​対策と​オリジンの​分離の​2項目に、​指摘はございませんでした。

残っている​指摘は、​次の​3項目です。​いずれも​内容を​確認したうえで、​現時点では​対応しておりません。

参考項目の​結果​(2026年10月1日13時57分の​計測)

項目指摘の​内容エレノアの​対応
CSPによる​XSSの​対策古い​ブラウザのために'unsafe-inline'を​追加する​提案​(重要度:中)追加しておりません。​ハッシュに​対応していない​古い​ブラウザに​向けた​指定で、​現在の​主な​ブラウザでは​無視されます
HSTSpreloadの​指定がない​(重要度:中)取り消しに​数か​月かかるため、​付けておりません
Trusted TypesTrusted Typesの​指定がない​(重要度:高)導入しておりません。​今後の​検討事項です

Trusted Typesは、​スクリプトによる​ページの​書き換えを​悪用した​攻撃​(DOMベースの​XSS)を​防ぐ仕組みです。​導入には、​外部の​サービスを​含め、​ページで​動くすべての​スクリプトが​対応している​必要があるため、​対応状況を​確認したうえで​検討してまいります。

よくある​質問

セキュリティヘッダーとは​何ですか?

Webサーバーが​ページと​一緒に​ブラウザへ​送る、​安全上の​扱いについての​指示です。​常に​httpsで​接続させる、​他の​サイトへの​埋め込みを​禁止する、​実行してよい​スクリプトを​限定するといった​指示がございます。​ブラウザは、​これらの​指示​に従って​動作します。

CSPを​設定すると、​サイトが​動かなくなることはございますか?

動かなくなる​場合がございます。CSPで​許可していない​スクリプトや​画像は、​ブラウザが​読み込みを​止めます。​指定に​漏れがあると、​メニューや​フォームなど、​スクリプトで​動く部分が​使えなくなります。​そのため、​違反を​報告するだけの​モード​(Content-Security-Policy-Report-Only)で​確認してから、​読み込みを​止める​モードに​切り替える​方法が​確実です。

TLS 1.0と​TLS 1.1を​停止すると、​サイトを​閲覧できなくなる​方はいらっしゃいますか?

ごく​古い端末と​ブラウザでは、​閲覧できなくなります。​エレノアの​サイトで​SSL Labsが​試した​68種類のうち、​接続できなかったのは、Android 4.3以前の​標準ブラウザや​Internet Explorer 10以前など、​おおむね​2013年ごろまでに​提供されていた​16種類です。​現在の​主な​ブラウザは​TLS 1.2以上に​対応しているため、​通常の​閲覧には​影響はございません。

自社の​ホームページの​セキュリティヘッダーは、​どこで​確認できますか?

無料の​診断サービスで​ご確認いただけます。MDN HTTP Observatoryや​securityheaders.comでは、URLを​入力するだけで、​設定されている​ヘッダーと​評価が​表示されます。securityheaders.comには、​診断結果を​一覧に​表示しないための​「Hide results」という​選択がございます。​通信の​暗号化の​設定は、SSL Labsで​ご確認いただけます。

セキュリティヘッダーを​設定すれば、​サイトの​対策は​十分ですか?

十分とは​申せません。​セキュリティヘッダーは、​スクリプトの​埋め込みによる​攻撃や、​他の​サイトへの​埋め込みを​悪用した​攻撃など、​特定の​種類の​危険を​減らすための​設定です。​ソフトウェアの​更新や、​管理画面の​パスワードの​管理など、​ほかの​対策とあわせて​行うことが​大切です。

まとめ

  • 2026年10月1日に​6種類の​セキュリティヘッダーを​追加し、​通信の​暗号化を​TLS 1.2以上に​限定。​トップページの​計測で、MDN HTTP Observatory(130点)、securityheaders.com、SSL Labsのすべてで​A+
  • CSPは​Googleが​推奨する​strict CSPの​方式とし、​スクリプトの​ハッシュは​サイトの​生成のたびに​自動で​計算
  • 違反を​報告するだけの​モードで​確認してから​切り替え、​表示と​問い合わせ​フォームを​止めずに​導入

本ブログでは、​店舗や​中小規模の​事業者の​皆様に​向けて、​ホームページ運用に​役立つ情報を​順次発信してまいります。LP制作や​ホームページ制作の​内容と​料金は、​サービス・​料金の​ページに​掲載しております。​ホームページの​リニューアルや​保守を​ご検討の​際は、​お問い合わせより​お気軽に​ご相談ください。

ブログの​記事一覧