Permissions Policy in Drupal konfigurieren
Browser-APIs wie Kamera, Mikrofon und Geolocation in Drupal kontrollieren — per seckit-Modul, EventSubscriber oder .htaccess-Fallback.
Permissions Policy in Drupal
Permissions Policy kontrolliert, welche Browser-APIs Ihre Website nutzen darf — Kamera, Mikrofon, Geolocation, Payment und mehr. Der Header verhindert, dass eingebettete Inhalte (iframes) oder kompromittierte Scripts auf sensible APIs zugreifen. Im Wolf-Agents Web Security Check bringt eine korrekte Permissions Policy 10 von 166 Punkten.
In Drupal konfigurieren Sie Permissions Policy über die seckit Feature-Policy-Sektion oder einen Custom EventSubscriber. seckit verwendet teilweise noch die ältere Feature-Policy-Syntax — mit dem EventSubscriber setzen Sie den aktuellen Permissions-Policy-Header.
Implementierung
Empfehlung: Nutzen Sie den EventSubscriber für den aktuellen Permissions-Policy-Header. seckit setzt teilweise noch den veralteten Feature-Policy-Header, der von modernen Browsern nicht mehr unterstützt wird.
# seckit: /admin/config/system/seckit → Tab "Various"
# Feature-Policy / Permissions-Policy Feld:
camera=(), microphone=(), geolocation=(), payment=(), usb=(), magnetometer=(), gyroscope=(), accelerometer=() <?php
// modules/custom/security_headers/src/EventSubscriber/PermissionsPolicySubscriber.php
namespace Drupal\security_headers\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() {
return [KernelEvents::RESPONSE => ['onResponse', 0]];
}
public function onResponse(ResponseEvent $event) {
$response = $event->getResponse();
$response->headers->set('Permissions-Policy',
'camera=(), microphone=(), geolocation=(), payment=(), usb=(), magnetometer=(), gyroscope=(), accelerometer=()'
);
}
} # .htaccess — Permissions-Policy
<IfModule mod_headers.c>
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=()"
</IfModule> Verifizierung
Nach der Konfiguration den Cache leeren und den Header per curl prüfen.
# Cache leeren und Header prüfen
drush cr
curl -sI https://ihre-domain.de | grep -i permissions-policy
# Erwartete Ausgabe:
# permissions-policy: camera=(), microphone=(), geolocation=() Häufige Fehler
seckit setzt Feature-Policy statt Permissions-Policy
Ältere seckit-Versionen setzen den veralteten Feature-Policy-Header. Moderne Browser ignorieren diesen und erwarten Permissions-Policy. Nutzen Sie den EventSubscriber oder aktualisieren Sie seckit auf die neueste Version.
Permissions nach Modul-Installation nicht aktualisiert
Nach der Installation eines Moduls, das Browser-APIs nutzt (z.B. Geolocation für Standortsuche), müssen Sie die Permissions Policy anpassen. Vergessen Sie nicht drush cr nach jeder Änderung.
Mehrere Module setzen gleichen Header
Wenn seckit und ein EventSubscriber beide Permissions-Policy setzen, überschreibt der letzte Writer. Prüfen Sie mit curl -sI, ob nur ein Header in der Antwort erscheint.
Compliance-Relevanz
Permissions Policy erfüllt Anforderungen zum Datenschutz durch Technikgestaltung.
Wie steht Ihre Domain bei Permissions Policy?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.