Permissions Policy für Nginx konfigurieren

Schritt-für-Schritt-Anleitung: Permissions Policy auf Nginx einrichten, Browser-APIs wie Kamera und Mikrofon kontrollieren — mit fertiger Konfiguration zum Kopieren.

Nginx · Schritt für Schritt

Permissions Policy auf Nginx

Permissions Policy kontrolliert, welche Browser-APIs auf Ihrer Website verwendet werden dürfen — von Kamera und Mikrofon bis zu Standort und USB-Geräten. Nginx unterstützt den Header nativ über die add_header-Direktive. Verwenden Sie das always-Keyword, damit der Header auch bei Fehlerseiten gesetzt wird. Beachten Sie die location-Vererbung: eigene add_header-Direktiven in einem location-Block überschreiben die Header aus dem server-Block.

Permissions Policy ist mit 10 von 166 Punkten ein Faktor im Wolf-Agents Web Security Check. Die Konfiguration dauert weniger als 5 Minuten.

1 Schritt 1 von 2

Permissions-Policy-Header konfigurieren

Fügen Sie den Permissions-Policy-Header in Ihrem HTTPS-Server-Block hinzu. Die empfohlene Konfiguration deaktiviert Kamera, Mikrofon, Standort, Payment und USB und erlaubt Autoplay nur für die eigene Origin. Das always-Keyword stellt sicher, dass der Header auch bei 404- und 500-Fehlerseiten gesetzt wird.

/etc/nginx/conf.d/permissions-policy.conf Produktiv
# Permissions Policy — Browser-APIs einschränken
add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=(), autoplay=(self)" always;
Location-Vererbung beachten

Nginx vererbt add_header-Direktiven aus dem server-Block in location-Blöcke — aber nur, wenn der location-Block keine eigenen add_header-Direktiven enthält. Sobald ein location-Block einen eigenen Header setzt, müssen Sie den Permissions-Policy-Header dort wiederholen.

2 Schritt 2 von 2

Konfiguration testen und verifizieren

Prüfen Sie die Nginx-Konfiguration auf Syntaxfehler und laden Sie sie neu. Verifizieren Sie den Header anschließend mit curl und den Browser DevTools (Application > Permissions Policy).

Terminal Verifizieren
# 1. Konfiguration prüfen und Nginx neu laden
sudo nginx -t && sudo systemctl reload nginx

# 2. Permissions-Policy-Header prüfen
curl -sI https://ihre-domain.de | grep -i permissions

# Erwartete Ausgabe:
# Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=(), usb=(), autoplay=(self)
In Chrome können Sie die aktive Permissions Policy auch unter DevTools > Application > Frames inspizieren. Dort sehen Sie, welche Features erlaubt (grün) und blockiert (rot) sind.

Wie steht Ihre Domain bei Permissions Policy?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.

Häufig gestellte Fragen

Wo setze ich den Permissions-Policy-Header in Nginx?

Im server- oder http-Block Ihrer Nginx-Konfiguration. Verwenden Sie die add_header-Direktive mit dem always-Keyword, damit der Header auch bei Fehlerseiten (404, 500) gesetzt wird. Bei location-Blöcken beachten Sie: add_header wird dort nur vererbt, wenn im location-Block keine eigenen add_header-Direktiven stehen.

Was passiert ohne das always-Keyword?

Ohne always setzt Nginx den Header nur bei erfolgreichen Responses (2xx/3xx). Fehlerseiten erhalten keinen Permissions-Policy-Header — Angreifer könnten gezielt Fehlerseiten nutzen, um Browser-APIs ohne Einschränkung aufzurufen.

Überschreibt ein location-Block den Permissions-Policy-Header?

Ja, das ist ein häufiger Fehler. Wenn ein location-Block eigene add_header-Direktiven enthält, erbt er keine Header aus dem übergeordneten server-Block. Sie müssen den Permissions-Policy-Header dann in jedem location-Block wiederholen, der eigene add_header-Direktiven hat.

Kann Permissions Policy meine Nginx-Website kaputt machen?

Nur wenn Ihre Website Browser-APIs aktiv nutzt und Sie diese deaktivieren. camera=() blockiert z.B. auch eine eigene Videocall-Funktion. Für Standard-Websites ohne Kamera/Mikrofon-Funktion ist die empfohlene Konfiguration problemlos einsetzbar.

Muss ich Nginx nach der Änderung neu starten?

Ein Reload genügt — nginx -t prüft die Syntax, systemctl reload nginx lädt die Konfiguration ohne Unterbrechung aktiver Verbindungen. Ein vollständiger Neustart ist nicht nötig.