とある案件で推奨セキュリティヘッダーをインストールしてね~って言われたんで覚書。
下記の「Analyse your HTTP response headers」っていうサイトでセキュリティ度合いをざっくり知れるみたい。
Analyse your HTTP response headers
あなたのサイトのHTTPレスポンスヘッダーを解析してくれるサイト
このサイトで「A」評価以上がでればいい感じらしい。
.htaccessにセキュリティヘッダーを追記
1 2 3 4 5 6 7 |
# Security Headers Header always set X-Content-Type-Options "nosniff" Header always set Referrer-Policy: "no-referrer-when-downgrade" Header always append X-Frame-Options SAMEORIGIN Header always set Permissions-Policy "accelerometer=(),autoplay=(),camera=(),encrypted-media=(),fullscreen=*,geolocation=*,gyroscope=(),interest-cohort=(),magnetometer=(),microphone=(),midi=(),payment=(),sync-xhr=*,usb=(),xr-spatial-tracking=()" Header always set Strict-Transport-Security: "max-age=31536000" env=HTTPS # End Security Headers |
各設定項目の解説
X-Content Type Options
1 |
Header always set X-Content-Type-Options "nosniff" |
ファイル形式を誤認する可能性のあるMIME Sniffingを使用せず、Content-Type属性から判断することを強制することで、不正なスクリプトの実行を防止する。
Referrer-Policy
1 |
Header always set Referrer-Policy: "no-referrer-when-downgrade" |
セキュリティ水準が低下する場合”HTTPS→HTTP”リファラーは送信されないようにします。
X-Frame-Options
1 |
Header always append X-Frame-Options SAMEORIGIN |
ブラウザがページをframe, iframe,embed,objectの中に表示する許可設定。他サイトに埋め込まれないよう保証することで、クリックジャッキング攻撃を防いでくれる。
Permissions-Policy
1 |
Header always set Permissions-Policy "geolocation=(); midi=();notifications=();push=();sync-xhr=();accelerometer=(); gyroscope=(); magnetometer=(); payment=(); camera=(); microphone=();usb=(); xr=();speaker=(self);vibrate=();fullscreen=(self);" |
独自のコンテンツにこれらのルールを実装し、外部のiframeがこのブラウザー機能を使用するのも防いでくれ、サイトを保護するための強力なヘッダーにすることができる。
HTTP Strict Transport Security
1 |
Header always set Strict-Transport-Security: "max-age=31536000" env=HTTPS |
HTTPの代わりにHTTPSを用いて通信を行うようにする。