Permissions Policy in Contao konfigurieren
Browser-APIs in Contao kontrollieren — Kamera, Mikrofon, Geolocation und weitere APIs per Symfony EventSubscriber oder .htaccess gezielt deaktivieren.
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.
<?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=()'
);
}
}# public/.htaccess — Permissions Policy
<IfModule mod_headers.c>
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=(), magnetometer=(), gyroscope=(), accelerometer=()"
</IfModule>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.
# 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.
Wie steht Ihre Domain bei Permissions Policy?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.