セキュリティヘッダー診断
サイトのURLを入れると、ブラウザ側で働く守りの設定(セキュリティヘッダー)が入っているかを確かめられます。サイトの中身に手を入れなくても、サーバーの設定だけで足せる守りです。
セキュリティヘッダーとは
ページを開くと、サーバーは本文と一緒に「ヘッダー」と呼ばれる付帯情報を返します。その中に「このページはこう扱ってほしい」という指示を書いておくと、ブラウザがそれに従って守りを固めます。
この道具では、効き目が大きく、入れやすい4つを基本として採点し、残りは参考として表示しています。
基本の4つ
| 設定 | 防げること |
|---|---|
| https への転送 | 暗号化されていない http で開かれたとき、通信を読まれたり書き換えられたりすること |
| HSTS | 2回目以降に http で開こうとしても、ブラウザが自動で https にする。最初の一瞬を狙う手口を防ぐ |
| 埋め込みの制限(X-Frame-Options) | 悪意のあるサイトに透明な状態で埋め込まれ、気づかないうちにボタンを押させる手口(クリックジャッキング) |
| nosniff | 画像などのふりをしたファイルを、ブラウザがプログラムとして動かしてしまうこと |
参考の項目
CSP
読み込めるスクリプトや画像の出どころを制限する、強力な設定です。ただし広告や外部の部品を使うサイトでは、許可する出どころを細かく書く必要があり、間違えると表示が壊れます。まずは基本の4つからで構いません。
Referrer-Policy
リンク先に「どのページから来たか」をどこまで伝えるかの設定です。今のブラウザは、設定が無くても控えめな値で動きます。URLに個人の情報が入るサイトでは、明示しておくと安心です。
バージョン番号の表示
サーバーやプログラムのバージョンが応答に出ていると、攻撃する側が弱点を絞り込む手がかりになります。表示しない設定にしておきます。
Cookieの属性
ログインに関わるCookieには、https でだけ送る「Secure」と、スクリプトから読ませない「HttpOnly」が必要です。
入れ方
レンタルサーバーなら、多くは .htaccess に数行書き足すだけで入ります。たとえば 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>入れたあとは、サイトの表示と、フォームや決済が動くかを必ず確かめてください。nosniff は、ファイルの種類が正しく名乗られていないとCSSやスクリプトを読まなくなります。
入れる順番
一度に全部入れると、表示が崩れたときに原因が分かりません。1つずつ入れて、そのたびに表示を確かめるのが安全です。おすすめの順番は、nosniff → 埋め込みの制限 → Referrer-Policy → HSTS です。HSTSは一度入れるとブラウザが覚えるため、https で問題なく表示できることを確かめてから最後に入れます。
WordPressの場合
セキュリティ系のプラグインの多くに、これらのヘッダーを足す設定があります。.htaccess を触るのが不安なら、そちらを使っても構いません。ただし、プラグインとサーバーの両方で同じヘッダーを入れると、二重に送られることがあります。どちらか一方にそろえてください。