Permissions-Policy

In einer zunehmend sich technisch wandelnden Welt verfügen Webbrowser über immer mehr Features. Nicht immer bedeutet dies, dass diese Features keinen erheblichen erheblichen Eingriff in die Privatsphäre darstellen können. Besonders in Anbetracht einer immer mobiler werdenden Welt. So verfügt fast jede fünfte Person über ein Smartphone, über welchem die Aktivitäten des Nutzers zurück verfolgt werden können. Oder aber auch gegen den Willen des Nutzers als Wanze gegen Ihn selbst oder Andere zum Einsatz gebracht werden kann. Viele mobile Endgeräte verfügen heute bereits über GPS, Kamera und ein Mikrofon. So, dass sich diese im Handumdrehen und ein wenig Geschick dafür nutzen lassen.

In Verbindung mit einem XSS Fail haben sogar Hacker oder eingebundene 3rd Parity Recourcen die Möglichkeit zur Zweckentfremdung. Und würden somit an sensible Daten gelangen. Zum Schutz vor Missbrauch kann daher der HTTP-Security-Header Permissions-Policy (ursprünglich Feature-Policy) zum Einsatz kommen.

Permissions-Policy: Beschreibung Funktionsweise

Mit der Permissions-Policy kann man dem Webbrowser mitteilen aus welchen Herkunftsquellen die Features zugriff haben sollen. Man spricht hier von Origins (Zusammensetzung der Herkunft aus Schemata, Hostname und Port). Diese Policy kann sich global auf Toplevel (Domain) oder als Eingrenzung auf bestimmte Bereiche der Website beziehen und eingesetzt werden.

Man kann also Permissions-Policy prima dazu verwenden um die Websitesicherheit , aber auch die Benutzerfreundlichkeit (Usability) zu erhöhen. Dazu zählen folgende Fallbeispiele:

  • Das verhindern von abgreifen sensibler Daten durch die Verwendung von Mikrofon, Kamera, Standort über PC und / oder mobilen Endgerät des Benutzers.
  • Automatisches abspielen von Medien über eingebundene 3rd Parity Recourcen (Youtube etc.)
  • Unterbinden der Verwendung bereits veralteter oder Benutzerunfreundlicher API-Schnittstellen.
  • Unterbinden von XHR-Anfragen die XMLHttpRequest zum übertragen von Daten ermöglichen.

Um eine eben solche Policy umsetzen zu können werden je nach Art und Umfang eine oder mehrere Direktiven verwendet. Die Direktiven bestehen meist aus dem Namen des Features gefolgt von einer Allow-List. Damit dem Browser mitgeteilt werden kann wie die Policy angewendet werden soll (als HTTP-Header oder bei iFrame-Elementen als Allow-Atribute).

Als HTTP-Header könnte die Ausgabe des Servers wie folgt aussehen:

# HTTP/2 200 OK
# date: Thu, 06 Jan 2022 18:27:22 GMT
# content-type: text/html; charset=UTF-8
# content-length: 2817
# permissions-policy: camera=(), microphone=()

Das o.g. Beispiel sorgt dafür, dass die aufgerufene Webseite und alle eingebundenen Ressourcen keinen Zugriff auf Kamera und Mikrofon haben.  Für alle nicht genannten Features gelten weiterhin die Standardeinstellungen.