久しぶりに、
内容を
前提
過去に
基本的な
Django製の
Mezzanine で 構築された ブログに 対して http-observatory-cli で 脆弱性を 検証してみる | Monotalk Observatory by Mozilla で、
ウェブサイトの セキュリティを チェックする 2回目 | Monotalk
実行結果
以下、
Scan results for www.monotalk.xyz
URL 直接指定なので、
出力される 警告に ついて
3つ出力されていました。
Content-Security-Policy
これは、以前より 出力されていて 対処は 無理だと 思っていた 部分で 今回も 対処は していません。 Referrer-Policy
これは以前出力されていなかった、 もしくは 気づいていなかった 観点で、 今回対処しています。 Feature-Policy
これも以前出力されていなかった、 もしくは 気づいていなかった 観点で、 今回対処しています。
警告に 対処する
Referrer-Policy
,Feature-Policy
の
Referrer-Policy
サイトから
Referrer-Policy - HTTP | MDN を
ドキュメントを
気に
なった ところ HTML meta タグ、
HTTP ヘッダで 設定できる
HTTP ヘッダでも、HTML meta タグでも 設定が 可能です。
HTML meta タグで指定する 場合は 以下のように 記載します。 <meta name="referrer" content="origin">
CSS の
Referrer-Policy
CSS 内に記載された リソースに アクセスする 際の Referrer は、 CSS 送信時に 指定された Referrer-Policy の 設定に 従います。
Referrer-Policy と
して 何を 指定するか
このブログは、 Mezzanine を 使用していて、 公開された Web 上に 管理画面を 持っています。
以下、2点より、 strict-origin-when-cross-origin
を設定する ことにしました。 - 管理画面から
リンクへの アクセスを 行う ことは 頻度は 少ないが、 発生する ことがあり、 その 際は URL を 特定されたくない。 - このサイトは
HTTPS での アクセスのみ 許可している。 外部への リンクも HTTPS で 基本貼っている。
- 管理画面から
Apache での
Referrer-Policyの 設定
Apache での設定は 以下の 通りです。 Header always set Referrer-Policy "strict-origin-when-cross-origin"
Feature-Policy
ブラウザの
サイトと
また、
ブラウザの
サポート状況
Feature Policy - HTTP | MDN を見る 限り、 Referrer-Policy
よりも対応ブラウザが 少ないです。 Opera と Chrome の サポートが 進んでいます。 Feature-Policy の
デモサイト
Feature-Policy の動作を 確認できる サイトが ありました。
ON/OFF でどのような 動きに なるかが 確認できます。
Feature Policy Kitchen SinkFeature-Policy と
して 何を 指定するか
以下、Feature Policy - HTTP | MDN の デスクトップChrome の 対応状況を 抜粋、 機能の 説明リンクを 付与した 表に なります。
- OFFに
する 機能の 一覧
上記からサイト上で 使用しない 機能を OFFに する ことにしました。
対象は以下に なります。
制御機能 | none は OFFにする |
---|---|
accelerometer | none |
ambient-light-sensor | none |
autoplay | none |
camera | none |
document-domain | |
encrypted-media | none |
fullscreen | none |
geolocation | none |
gyroscope | none |
layout-animations | |
legacy-image-formats | |
magnetometer | none |
microphone | none |
midi | none |
oversized-images | |
payment | none |
picture-in-picture | none |
speaker | none |
sync-xhr | |
unoptimized-images | |
unsized-media | |
usb | none |
vibrate | Chrome でエラーになったので設定しなかった |
vr | none |
Apache での
Feature-Policy の 設定
以下、Feature-Policy を 設定しました。 Header always set Feature-Policy "accelerometer 'none'; ambient-light-sensor 'none'; autoplay 'none'; camera 'none'; encrypted-media 'none'; fullscreen 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none';microphone 'none'; midi 'none';payment 'none';picture-in-picture 'none';speaker 'none';usb 'none';vr 'none'"
vibrate で
エラー
vibrate
を設定した ところ、 以下 エラーが 発生したので 設定しませんでした。
security - How can I add in Apache Feature Policy Header? - Server Fault
Chrome のVersionは 72.0.3626.121
ですが機能が 削除されたか、 未対応なのかと 思います。 Error with Feature-Policy header: Unrecognized feature: ‘speaker’.
django-feature-policy · PyPI をみる 限り、 speaker
は削除されたようです。
後日、設定を 削除しました。 Error with Feature-Policy header: Unrecognized feature: ‘vr’.
Feature-Policy: xr - HTTP | MDN に記載が ありますが、 vr
は削除されたようです。
後日、設定を 削除しました。
Django の plugin に ついて
それぞれの
Django での Reffer-Policy の 設定
Django のdjango-referrer-policy
が
django-referrer-policy · PyPI
Middleware でReffer-Policy
が
Django での Feature Policy の 設定
Django のdjango-feature-policy
が
django-feature-policy · PyPI
Feature Policy は
チェックツールに ついて 思う こと
Web 上で
ただ、
参考
警告の
- Referrer-Policy に
よる リファラ制御 | blog.jxck.io - Feature Policy に
よる Permission Delegation | blog.jxck.io - A new security header: Referrer Policy
- Referrer-Policy - HTTP | MDN
- Introduction to Feature Policy | Web | Google Developers
- javascript - How to set feature policy headers in JS - Stack Overflow
以上です。
コメント