W3CでFeature Policyという仕様が議論されています。仕様は著者であるGoogleのIlya Grigorik氏のリポジトリ(URL)より確認できます。
このドキュメントはまだW3C公式のドキュメントとはなってはいませんが、先月行われたFace-to-Faceのミーティングでも議論がされています(議事録)
Feature Policy
セキュリティやパフォーマンスの観点で、Webデベロッパーがブラウザの特定のAPI(機能)を無効にしたい場合もあります。
そこで、 Feature-Policyヘッダを用いて以下のようにブラウザの機能を制限できるようにするのがこの仕様です。
また、このFeature-Policyヘッダは現在IETFで議論が行われている"A JSON Encoding for HTTP Header Field Values"(URL)というHTTPヘッダ値にjson形式を用いる仕様を利用している点も興味深いです。
なお、このFeature Policyを利用するためには、HTTPSである必要があります( HTTPS stateがmodernかつ、 potentially trustworthyなURL)
sample1
webrtc及び、geolocationを無効にする
Feature-Policy: {"disable":["webrtc","geolocation"]}
sample2
https://example.comにおいてgeolocationを無効にし、javascriptからdocument.cookieへのアクセスがあった場合はレポートを送信する(ブロックは行わない)
レポートはReporting APIの仕様(URL) で定義されています。
Feature-Policy: {"disable":["geolocation"], "target":["https://example.com"]}, {"disable":["cookie"], "mode":"report", "report-to":"default"}
sample3
同期のxhr, asyncのないscript読み込み、document.writeを無効にし、違反があった場合はレポートする
Feature-Policy: {"disable":["sync-xhr","sync-script","docwrite"], "report-to":"perf-violations"}
Directives
Feature-Policyでは、以下のディレクティブをして出来ます
指定できるAPI
Feature-Policyで無効に出来る機能は、今のところ以下のとおりです