Security Header

Permissions-Policy im Detail: Reduktion der Angriffsfläche

Der HTTP-Response-Header Permissions-Policy ist ein wesentliches Werkzeug zur Reduktion der Angriffsfläche (Attack Surface Reduction) einer Webanwendung. Aus Sicherheitsperspektive geht es nicht nur darum, dem Nutzer die Wahl zu lassen, ob er seinen Standort freigibt. Vielmehr dient der Header dem präventiven Schutz vor Missbrauch: Er entzieht potenziell gefährlichen Browser-APIs das Vertrauen, sodass selbst kompromittierte Frontend-Skripte keine Spionage- oder Betrugsaktionen ausführen können.

Fokus dieser Seite: Hier steht die Sicherheitsperspektive im Vordergrund – Bedrohungsmodelle, Zero-Trust-Härtung und das Zusammenspiel mit anderen Security Headern. Die technische Syntax, Direktiven-Referenz und Server-Konfiguration finden Sie auf der Schwesterseite Permissions-Policy als HTTP-Header.

Die Bedrohung: Missbrauch mächtiger Browser-APIs

Moderne Browser bieten Webseiten über HTML5 und JavaScript Zugriff auf hochempfindliche Systemkomponenten. Gelingt es einem Angreifer (z. B. durch Supply-Chain-Angriffe auf JavaScript-Bibliotheken oder Werbenetzwerke), eigenen Code auf Ihrer Website auszuführen, kann er folgende Angriffe starten:

  • Standort-Profiling (Geolocation API): Ausspionieren des physischen Aufenthaltsorts der Nutzer zur Erstellung von Bewegungsprofilen.
  • Abhören & Filmen (MediaDevices API): Aktivierung von Kamera und Mikrofon zu Spionagezwecken.
  • Clipboard-Hijacking (Zwischenablagenspionage):
    • Auslesen: Automatisches Auslesen der Zwischenablage, um Passwörter, Bankdaten oder private Nachrichten zu stehlen (clipboard-read).
    • Schreiben: Ersetzen von kopierten Krypto-Adressen (Wallet-IDs) durch Adressen des Angreifers vor dem Einfügen durch den Nutzer (clipboard-write).
  • Betrug über Zahlungs-APIs (Payment Request API): Initiieren unbefugter Zahlungsvorgänge über im Browser hinterlegte Kreditkarten.

Bedrohungen und ihre Abwehr im Überblick

Jede der mächtigen Browser-APIs eröffnet ein konkretes Missbrauchsszenario. Die folgende Tabelle zeigt, welche Direktive welche Bedrohung neutralisiert:

Browser-APIMissbrauch durch AngreiferDirektive zur Abwehr
GeolocationBewegungsprofile, Standort-Trackinggeolocation=()
Kamera/Mikrofonheimliches Filmen & Abhörencamera=(), microphone=()
ClipboardAuslesen/Manipulieren der Zwischenablageclipboard-read=(), clipboard-write=()
Payment Requestunbefugte Zahlungenpayment=()
USB/SerialZugriff auf angeschlossene Geräteusb=(), serial=()

Das Prinzip dahinter ist konsequentes Least Privilege: Was nicht gebraucht wird, wird abgeschaltet – nicht erst auf Nutzerentscheid, sondern bereits durch den Server.


Defense in Depth: Zusammenspiel mit anderen Security Headern

Die Permissions-Policy entfaltet ihre Stärke erst im Verbund mit weiteren Schutzmassnahmen. Sie ist eine letzte Verteidigungslinie, falls andere Schichten versagen:

SchutzzielPrimärer HeaderRolle der Permissions-Policy
Skript-Einschleusung verhindernContent-Security-Policybegrenzt Schaden, falls CSP umgangen wird
Clickjacking verhindernX-Frame-Optionssperrt Feature-Zugriff in eingebetteten Frames
MIME-Sniffing verhindernX-Content-Type-Options
Hardware-Missbrauch verhindernPermissions-Policyprimäre Verteidigung

Selbst wenn ein Angreifer die CSP umgeht und Code ausführt, verhindert eine restriktive Permissions-Policy, dass dieser Code Kamera, Mikrofon oder Standort missbraucht. Eine vollständige Übersicht bietet die Security-Header-Checkliste.

Härtung durch restriktive Sperrung (Zero Trust)

Das Sicherheitskonzept für B2B-Informationsseiten sieht vor, standardmässig alle nicht benötigten Hardware-APIs vollständig zu deaktivieren. Dies geschieht durch leere Klammern (), was der Blockierung für alle Parteien (eigene Domain und Dritte) entspricht:

Permissions-Policy: geolocation=(), camera=(), microphone=(), payment=(), clipboard-read=()

Durch diese Konfiguration deklarieren Sie den Browser Ihrer Nutzer zur Sicherheitszone. Selbst wenn Ihre Website eine kritische Cross-Site-Scripting (XSS) Schwachstelle aufweisen sollte, blockiert der Browser jeden Versuch des Schadcodes, die Kamera zu aktivieren, den Standort abzufragen oder sensible Bankdaten über Zahlungs-Schnittstellen abzufragen.


Sicherheit bei iframes (Iframe Delegation)

Oft müssen B2B-Websites externe Medien (z. B. YouTube-Videos oder Google Maps) über iframes einbetten. Standardmässig erben iframes die strengen Sicherheitsregeln der Hauptseite.

  • Möchten Sie einem iframe explizit ein Feature erlauben (z. B. Vollbild-Modus für ein Video), müssen Sie dies im HTML-Tag deklarieren: <iframe src="https://youtube.com/..." allow="fullscreen"></iframe>
  • Die Sicherheitsregel: Das iframe darf diese Berechtigung nur dann ausführen, wenn die Permissions-Policy der Hauptseite das Feature nicht global verboten hat. Die Server-Richtlinie der Hauptseite bildet somit die unumstössliche Sicherheitsgrenze.

Vorher/Nachher: Eine kompromittierte Werbe-Bibliothek

Ein realistisches Supply-Chain-Szenario zeigt den Sicherheitsgewinn:

  • Vorher (ohne Policy): Eine eingebundene Analytics-Bibliothek wird über ein gekapertes Update mit Schadcode versehen. Der Code fragt unbemerkt den Standort der Besucher ab und versucht, die Zwischenablage auszulesen. Da kein Permissions-Policy-Header gesetzt ist, gewährt der Browser diese Zugriffe (teils nach einem Dialog, den Nutzende reflexartig bestätigen).
  • Nachher (gehärtet): Der Server sendet geolocation=(), clipboard-read=(), clipboard-write=(), camera=(), microphone=(). Der eingeschleuste Code läuft zwar weiterhin, doch jeder Versuch, Standort oder Zwischenablage abzugreifen, wird vom Browser hart blockiert – der Angriff läuft ins Leere.
Permissions-Policy: geolocation=(), camera=(), microphone=(), payment=(), clipboard-read=(), clipboard-write=()

Die Lehre: Die Permissions-Policy schützt nicht vor der Einschleusung von Code (das ist Aufgabe der CSP), aber sie entwaffnet eingeschleusten Code, indem sie ihm den Zugriff auf sensible Hardware entzieht.

[!TIP] Die Permissions-Policy ist eine der modernsten Härtungsmassnahmen für Webseiten und schützt Ihre Nutzer effektiv vor unbemerktem Datenabfluss. Prüfen Sie die Absicherung Ihrer Browser-Features mit dem Security Header Check auf balou.tools.

Häufig gestellte Fragen (FAQ)

Kann die Permissions-Policy über JavaScript im Browser manipuliert werden?

Nein. Der Permissions-Policy-Header wird vom Webserver gesendet und vom Browser beim Laden der Seite fest verankert. Skripte im Frontend können diese Richtlinie nachträglich nicht aufheben oder ändern.

Wie schützt die Permissions-Policy vor Clipboard-Hijacking?

Durch Deaktivierung von `clipboard-read=()` und `clipboard-write=()` wird verhindert, dass bösartige Skripte Passwörter oder Kryptoadressen aus der Zwischenablage des Nutzers auslesen oder unbemerkt manipulieren.

Ersetzt die Permissions-Policy eine Content-Security-Policy?

Nein, beide ergänzen sich. Die CSP kontrolliert, welche Skripte und Ressourcen überhaupt geladen werden dürfen; die Permissions-Policy entzieht selbst geladenem (und eventuell kompromittiertem) Code den Zugriff auf Hardware-APIs. Erst zusammen bilden sie eine wirksame Defense-in-Depth.

Reduziert die Permissions-Policy die Angriffsfläche auch bei einer XSS-Lücke?

Ja. Selbst wenn ein Angreifer per Cross-Site-Scripting eigenen Code einschleust, blockiert der Browser dessen Zugriff auf gesperrte Features wie Kamera, Mikrofon oder Geolocation. Die Permissions-Policy begrenzt also den Schaden, den eingeschleuster Code anrichten kann.