WordPressのサイトヘルスに表示される「推奨セキュリティヘッダーがインストール済みではありません」というメッセージ。

メッセージの表示例

SSL化プラグイン「Really Simple SSL」をサイトに導入している場合に表示されることがあります。今回はサイトのセキュリティ面を改善して、このメッセージを解消する方法を解説いたします。

推奨セキュリティヘッダーについて

まずは、推奨セキュリティヘッダーとその確認方法についてご覧ください。

推奨セキュリティヘッダーとは?対応の必要性。

結論から言うと、このメッセージが表示されたからといって、必ずしも対応しなければならないものではありません。推奨されるセキュリティが有効になっていないということなので、致命的な問題ではないものの、対応したほうが安心だよね、と受け取って頂いて大丈夫です。

推奨セキュリティヘッダーとは、Really Simple SSLを有効化時に設定を推奨されるセキュリティを高めるための「数行のコード」のことです。数行のコードを指定の箇所にコピペするだけで解決できるので、設定しておくのがオススメです。

設定されているか確認する方法

メッセージは、WordPressのダッシュボード内「サイトヘルス画面」から確認できます。

サイトヘルス画面の箇所

また、セキュリティヘッダーのテストを行える便利なページがあります。メッセージが確認できたら、以下のセキュリティヘッダーテストページにサイトのURLを入れてみてください。
>>セキュリティヘッダーのテストページ

セキュリティヘッダー未設定の場合の評価

推奨セキュリティヘッダーが未設定の場合、このような判定になるはずです。自分のサイトがF判定だと不安になりますよね。ぜひこの機会に改善しておきましょう。

推奨セキュリティヘッダーを追加して解決する方法

推奨セキュリティヘッダーは「.htaccess」というファイルに追加します。以下のコードを「.htaccess」内の最下部にそのままコピペすればOKです。

# Security Headers
Header always set Strict-Transport-Security: "max-age=31536000" env=HTTPS
Header always set Content-Security-Policy "upgrade-insecure-requests"
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block
Header always set Expect-CT "max-age=7776000, enforce"
Header always set Referrer-Policy: "no-referrer-when-downgrade"
Header always append X-Frame-Options SAMEORIGIN
Header always set Permissions-Policy "geolocation=(); midi=();notifications=();push=();sync-xhr=();accelerometer=(); gyroscope=(); magnetometer=(); payment=(); camera=(); microphone=();usb=(); xr=();speaker=(self);vibrate=();fullscreen=(self);"
# End Security Headers

次の順番で操作していきます。

  1. FTPソフトまたは、ファイルマネージャで「サイトURL>public_html」内の「.htaccess」を開く
  2. ローカルにダウンロードする等して、元に戻せるようにバックアップする
  3. セキュリティヘッダーのコードをコピペして追加する

「.htaccess」はWordPressのダッシュボードからは操作できないので、FTPソフト、もしくはエックスサーバーなどのレンタルサーバーに用意されているファイルマネージャを利用します。

今回はエックスサーバーのファイルマネージャを例に操作していきます。
>>エックスサーバーのファイルマネージャ

どちらの編集方法でも「.htaccess」の設置箇所は「サイトURL>public_html」の中にあります。「wp-content」と同じ階層のディレクトリです。重要なファイルなので、必ずバックアップをとっておきましょう。

.htaccessの場所

次のようにファイルの最下部にコピペして更新します。この時、前後に1行ずつ空行をあけておきましょう。

コピペした例

ファイルマネージャを使う方法をご紹介いたしましたが、エックスサーバーの場合はサーバーパネルから直接「.htaccess」を編集いただくことも可能です。

サーバーパネルから直接編集できる箇所

正常に上書きできたら、再度セキュリティヘッダーテストページを確認してみましょう。次のようなA判定が表示されたら、正常に設定できているということです。

セキュリティヘッダーテストページの評価

ダッシュボードの「サイトヘルス」内のメッセージには、反映されるまでに少し時間がかかるようです。

テストページで良い判定になればひとまずOKとして、サイトヘルスのメッセージは少し時間をおいてから確認してみましょう。

弊社環境では、「Really Simple SSL」をアップデートすることでメッセージが消えました。プラグインが最新版だった別環境でも、3日ほど時間をあけて確認するとメッセージは解消されていました。

各セキュリティヘッダーの役割

各セキュリティヘッダーの役割について解説いたします。各記述の役割が気になる方や、不具合が出た際のチェック項目としてご活用ください。すべて追加して、不具合が起きた場合に一部の記述を削除するなどの対応で問題はないと思います。

※プラグイン「Really Simple SSL」のページを参照しています。
>>Manually adding recommended security headers on WordPress

HSTS(Header always set Strict-Transport-Security)

サイトへのすべてのリクエストをHTTPSで行うようになります。

Header always set Strict-Transport-Security: "max-age=31536000" env=HTTPS

Upgrade-Insecure-Requests

強制的にHTTPSで読み込ませてエラーを回避します(HTTPとHTTPSのコンテンツが混在時など)。

Header always set Content-Security-Policy "upgrade-insecure-requests"

X-Content Type Options

どのようなデータが渡されたかをブラウザに「推測」させないようにするものです。

Header always set X-Content-Type-Options "nosniff"

X-XSS Protection

クロスサイトスクリプティング(XSS)攻撃を検出した場合、ページの読み込みを停止します。

Header always set X-XSS-Protection "1; mode=block"

Expect-CT, Certificate Transparency

発行したSSL証明書をCTフレームワークという別のログに記録し、不正を防止します。

Header always set Expect-CT "max-age=7776000, enforce"

No Referrer When Downgrade header

HTTPS(セキュリティ高) から HTTP(セキュリティ低) になる場合、リファラーを設定しなくなります。

Header always set Referrer-Policy: "no-referrer-when-downgrade"

X-Frame-Options

iframe、embed、objectをあなたのサイトの独自ドメインに制限します。

Header always append X-Frame-Options SAMEORIGIN

Permissions-Policy

プラグインのプレミアム版(有料版)のみで利用できる設定に関する記述になります。
>>Permissions-Policy ヘッダーの使い方

Header always set Permissions-Policy "geolocation=(); midi=();notifications=();push=();sync-xhr=();accelerometer=(); gyroscope=(); magnetometer=(); payment=(); camera=(); microphone=();usb=(); xr=();speaker=(self);vibrate=();fullscreen=(self);"

まとめ

Really Simple SSL」は人気のプラグインなので、サイトヘルス内に同じメッセージが表示されている方も少なくないはずです。セキュリティヘッダーという数行のコードを「.htaccess」にコピペするだけで解消できるので、ぜひ当記事を参考にお試しください。

サイトヘルスに関連する記事