Permissions Policy in Contao konfigurieren

Browser-APIs in Contao kontrollieren — Kamera, Mikrofon, Geolocation und weitere APIs per Symfony EventSubscriber oder .htaccess gezielt deaktivieren.

Contao · Schritt für Schritt

Permissions Policy in Contao

Permissions Policy kontrolliert, welche Browser-APIs eine Website nutzen darf. Sie können Kamera, Mikrofon, Geolocation und weitere sensible APIs deaktivieren. Der Header ist mit 10 von 166 Punkten im Wolf-Agents Web Security Check relevant.

In Contao setzen Sie Permissions Policy über einen Symfony EventSubscriber oder als public/.htaccess-Fallback. Contao selbst nutzt keine der eingeschränkten APIs — aber eingebundene Drittanbieter-Scripts wie Google Maps oder Video-Player möglicherweise schon.

In Contao-Projekten werden Security-Header typischerweise auf drei Ebenen konfiguriert: in der config/config.yaml fuer Symfony-Framework-Header, per EventSubscriber fuer dynamische Header und in der public/.htaccess fuer Apache-Level-Header. Fuer Permissions Policy empfehlen wir die Konfiguration per EventSubscriber, da dieser die meiste Flexibilitaet bietet und nicht von der Webserver-Konfiguration abhaengt.

Nach jeder Aenderung an der Header-Konfiguration muessen Sie den Contao-Cache leeren: vendor/bin/contao-console cache:clear. Ohne Cache-Clear werden Aenderungen an der config.yaml oder an EventSubscribern nicht wirksam. In Produktionsumgebungen verwenden Sie cache:clear --env=prod fuer den korrekten Cache-Kontext.

Permissions-Policy-Implementierung in Contao

Der EventSubscriber ist der empfohlene Weg — er funktioniert unabhängig vom Webserver und überlebt Contao-Updates. Die .htaccess ist der schnelle Fallback für Apache-Hosting.

EventSubscriber (empfohlen)
PermissionsPolicySubscriber.php Empfohlen
<?php
// src/EventSubscriber/PermissionsPolicySubscriber.php

namespace App\EventSubscriber;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;

class PermissionsPolicySubscriber implements EventSubscriberInterface {

  public static function getSubscribedEvents(): array {
    return [KernelEvents::RESPONSE => ['onResponse', 0]];
  }

  public function onResponse(ResponseEvent $event): void {
    $response = $event->getResponse();
    $response->headers->set(
      'Permissions-Policy',
      'camera=(), microphone=(), geolocation=(), payment=(), usb=(), magnetometer=(), gyroscope=(), accelerometer=()'
    );
  }
}
.htaccess Fallback
public/.htaccess Fallback
# public/.htaccess — Permissions Policy
<IfModule mod_headers.c>
  Header always set Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=(), magnetometer=(), gyroscope=(), accelerometer=()"
</IfModule>
Google Maps und Geolocation

Wenn Sie Google Maps per Insert-Tag einbinden, erlauben Sie gezielt die Geolocation-API: geolocation=(self "https://maps.google.com"). Ohne diese Ausnahme wird die Karte ohne Standortfunktion geladen.

Verifizierung

Nach der Konfiguration leeren Sie den Contao-Cache und prüfen den Header per curl.

Terminal Verifizierung
# Cache leeren
vendor/bin/contao-console cache:clear

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

# Erwartete Ausgabe:
# permissions-policy: camera=(), microphone=(), geolocation=(), payment=(), usb=(), magnetometer=(), gyroscope=(), accelerometer=()

Häufige Fehler bei Permissions Policy in Contao

contao-console cache:clear vergessen

Nach Änderungen am EventSubscriber muss vendor/bin/contao-console cache:clear ausgeführt werden. Ohne Cache-Invalidierung wird der neue Header nicht gesetzt.

Contao-Extension überschreibt Permissions Policy

Manche Extensions wie Google Maps- oder Video-Player-Bundles benötigen Zugriff auf Geolocation oder Kamera. Prüfen Sie, welche APIs Ihre Extensions benötigen, und passen Sie die Policy entsprechend an.

Insert-Tags mit externen Ressourcen blockiert

Contao Insert-Tags für Google Maps oder YouTube-Embeds können durch eine strenge Permissions Policy eingeschränkt werden. Erlauben Sie gezielt die nötigen APIs für die jeweiligen Domains.

Compliance-Relevanz

Die korrekte Implementierung von Permissions Policy ist nicht nur eine technische Best Practice, sondern eine Anforderung, die bei Sicherheitsaudits und Penetrationstests regelmaessig geprueft wird. Fehlende oder falsch konfigurierte Header koennen zu Audit-Findings fuehren und die Zertifizierung gefaehrden.

Permissions Policy minimiert die Angriffsfläche und erfüllt Anforderungen aus Datenschutz- und Sicherheitsframeworks.

NIS2Art. 21(e) — Sicherheit bei Erwerb, Entwicklung und Wartung von Netz- und Informationssystemen
BSIAPP.3.1 — Webserver-Absicherung mit Security Headern
DSGVOArt. 32 — Technische Maßnahmen zum Schutz personenbezogener Daten

Wie steht Ihre Domain bei Permissions Policy?

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