Permissions Policy auf Hetzner konfigurieren

Browser-APIs auf Ihrem Hetzner vServer oder Cloud Server kontrollieren — Kamera, Mikrofon und Geolocation gezielt einschränken. Mit restriktiver und permissiver Konfiguration für Nginx und Apache.

Hetzner · Schritt für Schritt

Permissions Policy auf Hetzner

Permissions Policy kontrolliert, welche Browser-APIs Ihre Website und eingebettete Drittanbieter-Inhalte (iFrames) nutzen dürfen. Kamera, Mikrofon, Geolocation, Payment und weitere APIs können gezielt deaktiviert oder auf die eigene Domain beschränkt werden. Der Header ist mit 10 von 166 Punkten ein solider Beitrag im Wolf-Agents Web Security Check.

Auf einem Hetzner vServer ist die Konfiguration ein einfacher Einzeiler in der Webserver-Konfiguration. Der Vorteil: Alle APIs, die Ihre Anwendung nicht benötigt, werden serverseitig deaktiviert — selbst wenn ein eingeschleustes Script versucht, auf die Kamera zuzugreifen, blockiert der Browser den Zugriff.

1 Schritt 1 von 2

Permissions Policy konfigurieren

Wählen Sie zwischen der restriktiven Variante (alle APIs deaktiviert — empfohlen für die meisten Websites) und der permissiven Variante (ausgewählte APIs für die eigene Domain erlaubt — für Anwendungen, die z.B. Kamera oder Standort benötigen).

Nginx — Restriktiv
/etc/nginx/conf.d/permissions-policy.conf Empfohlen
# /etc/nginx/conf.d/permissions-policy.conf — Restriktiv (empfohlen)
# Deaktiviert alle sensiblen Browser-APIs
add_header Permissions-Policy
  "camera=(), microphone=(), geolocation=(), payment=(), usb=(), magnetometer=(), gyroscope=(), accelerometer=()"
  always;
Nginx — Permissiv
/etc/nginx/conf.d/permissions-policy.conf Permissiv
# /etc/nginx/conf.d/permissions-policy.conf — Permissiv
# Erlaubt ausgewählte APIs nur für die eigene Domain
add_header Permissions-Policy
  "camera=(self), microphone=(self), geolocation=(self), payment=(), fullscreen=(self), autoplay=(self)"
  always;
Apache — Restriktiv
/etc/apache2/conf-available/permissions-policy.conf Empfohlen
# /etc/apache2/conf-available/permissions-policy.conf — Restriktiv
<IfModule mod_headers.c>
    Header always set Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=(), magnetometer=(), gyroscope=(), accelerometer=()"
</IfModule>
Apache — Permissiv
/etc/apache2/conf-available/permissions-policy.conf Permissiv
# /etc/apache2/conf-available/permissions-policy.conf — Permissiv
<IfModule mod_headers.c>
    Header always set Permissions-Policy "camera=(self), microphone=(self), geolocation=(self), payment=(), fullscreen=(self), autoplay=(self)"
</IfModule>
Syntax: () vs. (self)

Ein leeres () deaktiviert die API vollständig — auch für die eigene Seite. (self) erlaubt die Nutzung nur für die eigene Origin. Die Syntax ohne Anführungszeichen um self ist korrekt — im Gegensatz zu CSP, wo 'self' mit Anführungszeichen geschrieben wird.

2 Schritt 2 von 2

Verifizierung

Testen Sie die Konfiguration und prüfen Sie den Header mit curl. Stellen Sie sicher, dass der Header in der Antwort erscheint und alle gewünschten APIs auflistet.

Terminal Verifizierung
# Konfiguration testen und Webserver neu laden
sudo nginx -t && sudo systemctl reload nginx
# oder für Apache
sudo a2enconf permissions-policy && sudo apachectl configtest && sudo systemctl reload apache2

# Permissions-Policy Header prüfen
curl -sI https://ihre-domain.de | grep -i permissions-policy
Testen Sie nach der Aktivierung alle Seiten mit eingebetteten Inhalten — YouTube-Videos, Google Maps, Payment-Widgets. Wenn diese nicht mehr funktionieren, müssen Sie die Policy gezielt anpassen.

Häufige Fehler bei Permissions Policy auf Hetzner

YouTube und Google Maps blockiert

YouTube-Embeds benötigen fullscreen=(self) und autoplay=(self). Google Maps benötigt geolocation=(self). Bei geolocation=() zeigt Maps zwar die Karte, aber die „Mein Standort"-Funktion im Embed funktioniert nicht mehr.

Feature-Policy für Safari

Safari unterstützt Permissions-Policy teilweise erst seit Version 16. Ältere Safari-Versionen verstehen nur den veralteten Feature-Policy-Header. Für maximale Kompatibilität setzen Sie beide Header — das verursacht kein Problem, da Browser unbekannte Header ignorieren.

Nginx add_header Vererbung

Wie bei allen add_header-Direktiven in Nginx: Ein einzelnes add_header in einem location-Block überschreibt alle geerbten Header. Wenn Sie in einem Location-Block andere Header setzen, müssen Sie den Permissions-Policy-Header dort wiederholen.

Compliance-Relevanz

Die Permissions Policy schützt die Privatsphäre von Besuchern, indem sie den Zugriff auf sensible Browser-APIs kontrolliert. Insbesondere Geolocation und Kamera-Zugriff sind datenschutzrelevant.

OWASPOWASP ASVS — Kontrolle über Browser-Features und API-Zugriffe
DSGVOArt. 25 — Privacy by Design, Minimierung des Zugriffs auf Geolocation und Kamera
BSIAPP.3.1 — Webserver-Absicherung, Minimierung der Angriffsfläche

Wie steht Ihre Domain bei Permissions Policy?

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