Nginx

KUSANAGI+Nginxのレスポンスヘッダーのセキュリティ対策

2017.11.05

光るキーボード

ガチでセキュリティやるならContent Security Policyはやっておいた方がいいよ的な話題になりContent Security Policyについて調べてみました。確かに魅力的な施策ですが、マーケティングと相性最悪な予感がひしひし伝わってきましたので今回は実装しないことにしました。うまくチューニングすれば両立できるかも知れませんが相当な工数がかかりそうです。

Content Security Policyについて調べている時に、運営に支障のなさそうな対策を見つけましたので、そちらは実装してみようかと思います。

レスポンスヘッダーで行うセキュリティ対策

Nginxの設定ファイルにそれぞれのコードを記述します。KUSANAGI+NignxでSSL運営している前提の設定です。

クリックジャッキング対策

クリックジャッキング対策をサクッと説明するとiframeでサイトを読み込まれないようにして、悪用されないようにする対策です。

/etc/nginx/conf.d/プロファイル名_ssl.confに下記のコードを追記します。下記の例では同一サイトは許可でその他を禁止しています。

add_header X-Frame-Options SAMEORIGIN;

X-Frame-Optionsの設定

DENY全部不許可
SAMEORIGIN同一サイトはOK
ALLOW-FROM全部許可

XSS対策

レスポンスヘッダーにX-XSS-Protectionを指定し、ユーザーのブラウザのXSSに対するフィルター機能を強制的に有効にさせる対策です。

X-XSS-Protectionの指定

こちらも同じく/etc/nginx/conf.d/プロファイル名_ssl.confに下記のコードを追記します。

add_header X-XSS-Protection "1; mode=block";

記述する場所

http、server、locationのどこかに記述すれば良いらしいのですが、私の環境では指定したファイルの下記記述ではじまるlocation以外ではうまく反映されませんでしたので、共有しておきます。

location ~ [^/]\.php(/|$)

ファイルの編集が終わったらsudo nginx -tで設定ファイルのチェックをおこない問題がなければ下記コマンドで設定ファイルのリロードを行います。

$ sudo nginx -s reload

設定が反映されていれば完了

下記コマンドで設定が反映されているか確認し、反映されていれば完了です。

curl -I https://exsample.jp

下記内容が含まれていればOKです。

X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block

Content Security Policyはともかく今回紹介したレスポンスヘッダー対策は大したトレードオフもありませんので、やっておいた方が良い対策だと言えるでしょうね。

WEBSITE DESIGN REQUEST

ホームページ制作依頼について

W・D・Sでホームページ制作をご希望の方はお気軽にご相談ください。
制作内容、ご予算、納期をお知らせいただくとスムーズです。

ホームページ制作を相談する