Permissions Policy in PHP konfigurieren
Schritt-für-Schritt-Anleitung: Permissions Policy in PHP einrichten — mit header()-Code zum Kopieren und Best Practices.
Permissions Policy in PHP
Permissions Policy kontrolliert, welche Browser-APIs Ihre Website und eingebettete Iframes nutzen dürfen. Durch das Deaktivieren ungenutzter APIs (Kamera, Mikrofon, Geolocation) reduzieren Sie die Angriffsfläche. Mit 10 von 166 Punkten im Wolf-Agents Web Security Check.
In PHP setzen Sie die Permissions Policy mit einem einzigen header()-Aufruf. Über auto_prepend_file wird der Header automatisch für alle PHP-Dateien gesetzt. Die Policy deaktiviert alle ungenutzten Browser-APIs.
In PHP-Projekten gibt es drei Wege, Security-Header zu setzen: die header()-Funktion
direkt im Code, eine zentrale auto_prepend_file in der php.ini oder ein
PSR-15 Middleware-Stack in modernen Frameworks. Fuer Permissions Policy empfehlen wir die
auto_prepend_file-Methode, da sie alle PHP-Responses abdeckt -- auch Fehlerseiten
und Legacy-Code, der keine Middleware verwendet.
Beachten Sie, dass header() in PHP vor jeder Ausgabe aufgerufen werden muss. Sobald
der Body gesendet wird (auch durch ein einzelnes Leerzeichen vor <?php), koennen
keine Header mehr gesetzt werden. Verwenden Sie output_buffering oder
auto_prepend_file, um dieses Problem zu vermeiden. Der Wolf-Agents Web Security Check
prueft den Permissions-Policy-Header automatisch.
Permissions Policy in PHP konfigurieren
Fügen Sie den Header in Ihrer security-headers.php hinzu. Über auto_prepend_file in der .user.ini wird die Datei vor jedem PHP-Script geladen.
<?php
// security-headers.php — Permissions Policy
if (!headers_sent()) {
header('Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=(), usb=(), magnetometer=(), gyroscope=(), accelerometer=()');
}Konfiguration verifizieren
Prüfen Sie den Header mit curl oder dem Wolf-Agents Web Security Check.
# Permissions Policy pruefen
curl -sI https://ihre-domain.de | grep -i permissions-policy
# Erwartete Ausgabe:
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=(), ...Häufige Fehler
Leere Policy statt expliziter Deny
Ein leerer Permissions-Policy-Header hat keine Wirkung. Jede API muss explizit mit =() deaktiviert werden. Fehlende APIs bleiben standardmäßig für die eigene Origin erlaubt.
Payment API blockiert Checkout
Wenn Sie payment=() setzen, wird die Payment Request API blockiert. Falls Sie Stripe, PayPal oder Apple Pay nutzen, müssen Sie payment=(self) setzen oder die Direktive weglassen.
Permissions-Policy vs. Feature-Policy
Feature-Policy ist veraltet und wird von modernen Browsern ignoriert. Verwenden Sie ausschließlich Permissions-Policy — die Syntax unterscheidet sich (Komma-getrennt statt Semikolon).
Compliance-Relevanz
Wie steht Ihre Domain bei Permissions Policy?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.