HTTPセキュリティヘッダーを追加

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

HTTPセキュリティヘッダは、Webブラウザでホームページを見るとき、どのように振舞うかをブラウザに通知します。HTTPセキュリティヘッダを正しく追加することで、Webサイトのセキュリティを強化することが可能になります。せっかくSSL証明書を取得したのに、初期設定のまま使っているとセキュリティ上よくないと思い、HTTPセキュリティヘッダ設定を追加したので紹介します。

今回追加した設定は以下です。

HTTP STRICT TRANSPORT SECURITY(HSTS)

Webブラウザからの通信をHTTPS経由でのみ通信できるようにします。HTTP経由でサイトの閲覧ができなくなるので、SSL証明書を設定してから有効にしてください。max-ageで指定された時間(秒) HSTS設定をブラウザ上にキャッシュしてくれます。

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

X-FRAME OPTIONS

クリックジャッキングを防止するための設定で、Webサイト側でX-FRAME-OPTIONS設定することで、他のサイトのフレームを呼び出さないようにします。

クリックジャッキング:ボタンやリンクなどを見えない状態で配置してクリックさせる。

SAMEORIGIN:フレーム内のページ表示を同一ドメイン内のみ許可

Header always append X-Frame-Options SAMEORIGIN

X-XSS-Protection

クロスサイトスクリプティング攻撃が検出された場合、表示をブロックするようにします。

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

X-Content-Type-Options

セキュリティヘッダー「X-Content-Type-Options: nosniff」を指定で、コンテンツタイプの自動判別を無効にすることで、クロスサイトスクリプティング(XSS)を抑制します。

Header always set X-Content-Type-Options nosniff

以下も追加で設定しておきました。

Webページ内のhttp://をhttps://として扱ってくれる。

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

認証透過性ポリシーに違反するコネクションを拒否する。

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

ポリシーが指定されていない場合や値が無効な場合に、プロトコル水準が低下する場合はリファラーを送信しない。

リファラーはHTTPヘッダの1つで、それにリンクしているウェブページやリソースのアドレスを指している。リファラを見ることで、どこからそのページに要求が来たのかを知ることができる。

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

上記設定を追加してセキュリティヘッダのチェックしてみました。

Analyse your HTTP response headers (securityheaders.com)

判定結果は「A」で、設定した内容が意図通りに反映されていることが確認できました。

設定が反映されない場合は、Apacheの”mod_headers”が有効になっているか確認してみてください。あと、.htaccessの設定を有効にするのを忘れずに。

$sudo a2enmod headers
$sudo apache2ctl restart

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA