Permissions-Policy
Was geprüft
Geprüft wird, ob die Kopfzeile Permissions-Policy gesetzt ist; zerlegt wird sie nach der Syntax für strukturierte Kopfzeilen aus dem Internet-Standard RFC 9651. Eine syntaktisch fehlerhafte oder leere Kopfzeile ist ein eigener auffälliger Punkt, weil der Browser sie vollständig verwirft. Eine vom Abrufer gekürzte, sehr lange Kopfzeile ist „nicht geprüft“; die veraltete Feature-Policy wird nur als Hinweis genannt.
Wie relevant
Niedrig, wenn die Kopfzeile fehlt, leer oder fehlerhaft ist, weil sie Browserfunktionen wie Kamera, Mikrofon oder Standort nur zusätzlich absichert; der Browser fragt Besucher ohnehin um Erlaubnis.
Warum
Die Permissions-Policy legt fest, welche Browserfunktionen die Seite und eingebettete fremde Inhalte überhaupt anfragen dürfen. So kann ein eingebundenes Werbe- oder Fremdskript nicht nach Kamera oder Standort fragen, wenn Ihre Seite das nicht braucht.
Wie beheben
Setzen Sie eine Permissions-Policy, die nicht benötigte Funktionen mit leerer Liste () abschaltet. Achten Sie auf die neue Syntax: camera=() statt der alten Feature-Policy-Schreibweise camera 'none'.
Nebenwirkung: Abgeschaltete Funktionen fehlen auch eingebetteten Diensten: geolocation=() stoppt „Mein Standort“ in Karten, payment=() kann Bezahlknöpfe wie Apple Pay oder Google Pay stören, fullscreen=() den Vollbildmodus von Videos. Schalten Sie nur ab, was Sie sicher nicht nutzen, und testen Sie Karten, Videos und Kasse danach.
WordPress: Sicherheits- und Cache-Plugins schreiben die .htaccess oft selbst um und können eigene Kopfzeilen dabei entfernen oder doppelt setzen. Setzen Sie Kopfzeilen deshalb an genau einer Stelle (Plugin oder .htaccess außerhalb der Plugin-Blöcke „# BEGIN … # END“) und prüfen Sie nach jedem Plugin-Update mit curl -I.
Codebeispiel
Apache (.htaccess)
<IfModule mod_headers.c>
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=(), usb=()"
</IfModule>nginx
add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), usb=()" always;Cloudflare (Transform Rule)
Rules → Transform Rules → Response Header Transform Rules
Aktion: Set static — Header: Permissions-Policy — Wert: camera=(), microphone=(), geolocation=(), usb=()Weiterführende Quellen
Quellen der Methodik
docs/SCORING.md— Status und Schweregrade (§2), Kategoriescore und Abdeckung (§3), Gesamtwert (§4), keine Doppelabzüge (§5), Prüfkatalog mit Gewichten (§6), Versionierung (§8), Formulierungsregeln (§9), bewusst nicht geprüft (§10)docs/KALIBRIERUNG.md— Abgleich der Schwerefaktoren und Kappen mit externen Ankern (Web Almanac, Lighthouse, MDN HTTP Observatory, SSL Labs), Entscheidung scoring@1.4.0