セキュリティヘッダー診断

サイトのURLを入れると、ブラウザ側で働く守りの設定(セキュリティヘッダー)が入っているかを確かめられます。サイトの中身に手を入れなくても、サーバーの設定だけで足せる守りです。

ページを開いたときの応答ヘッダーを見るだけです。入力した内容は保存しません。

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

ページを開くと、サーバーは本文と一緒に「ヘッダー」と呼ばれる付帯情報を返します。その中に「このページはこう扱ってほしい」という指示を書いておくと、ブラウザがそれに従って守りを固めます。

この道具では、効き目が大きく、入れやすい4つを基本として採点し、残りは参考として表示しています。

基本の4つ

設定防げること
https への転送暗号化されていない http で開かれたとき、通信を読まれたり書き換えられたりすること
HSTS2回目以降に 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 を触るのが不安なら、そちらを使っても構いません。ただし、プラグインとサーバーの両方で同じヘッダーを入れると、二重に送られることがあります。どちらか一方にそろえてください。

関連