Reporting API in Drupal konfigurieren

Report-To und Reporting-Endpoints in Drupal per EventSubscriber — automatische Browser-Sicherheitsberichte für CSP-Violations und andere Fehler.

Drupal · Schritt für Schritt

Reporting API in Drupal

Reporting API ermöglicht es dem Browser, Sicherheitsverstöße automatisch an einen Server-Endpoint zu melden — CSP-Violations, COEP-Fehler, Deprecation-Warnings und Netzwerkfehler. Im Wolf-Agents Web Security Check bringt die Reporting API 4 von 166 Punkten.

seckit unterstützt die Reporting API nicht. Sie benötigen einen Custom EventSubscriber, der Reporting-Endpoints und Report-To Header setzt. Zusätzlich brauchen Sie einen Endpoint (eigene Route oder externer Service), der die JSON-Reports empfängt.

Der Wolf-Agents Web Security Check erkennt, ob die Reporting API konfiguriert ist und ob die Endpoint-URL korrekt formatiert ist. Für umfassendes CSP-Violation-Monitoring bietet die Wolf-Agents-Plattform ein dediziertes Reporting-Dashboard.

Implementierung per EventSubscriber

Erstellen Sie einen EventSubscriber, der beide Header setzt — Reporting-Endpoints (neue API) und Report-To (Fallback für ältere Browser).

EventSubscriber
ReportingSubscriber.phpEmpfohlen
<?php
// modules/custom/security_headers/src/EventSubscriber/ReportingSubscriber.php

namespace Drupal\security_headers\EventSubscriber;

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

class ReportingSubscriber implements EventSubscriberInterface {

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

  public function onResponse(ResponseEvent $event) {
    $response = $event->getResponse();

    // Reporting-Endpoints (neue API)
    $response->headers->set('Reporting-Endpoints',
      'default="https://ihre-domain.de/api/reports"');

    // Report-To (ältere API, Fallback)
    $reportTo = json_encode([
      'group' => 'default',
      'max_age' => 86400,
      'endpoints' => [
        ['url' => 'https://ihre-domain.de/api/reports']
      ]
    ]);
    $response->headers->set('Report-To', $reportTo);
  }
}
Endpoint-URL anpassen

Ersetzen Sie https://ihre-domain.de/api/reports durch Ihren tatsächlichen Reporting-Endpoint. Für einen einfachen Start empfiehlt sich ein externer Service wie report-uri.com — eine eigene Drupal-Route können Sie später ergänzen.

Verifizierung

Beide Header müssen in der Response erscheinen. Die Reporting-Endpoints-Ausgabe zeigt die neue API, Report-To den Fallback für ältere Browser. Prüfen Sie zusätzlich, ob der Endpoint erreichbar ist und mit 200 OK oder 204 No Content antwortet.

TerminalVerifizierung
# Cache leeren und Header prüfen
drush cr
curl -sI https://ihre-domain.de | grep -iE "(reporting-endpoints|report-to)"

# Erwartete Ausgabe:
# reporting-endpoints: default="https://ihre-domain.de/api/reports"

Häufige Fehler

Reporting-Endpoint nicht erreichbar

Der Browser sendet Reports nur, wenn der Endpoint per HTTPS erreichbar ist und 200 OK oder 204 No Content zurückgibt. Prüfen Sie, dass der Endpoint existiert und korrekt antwortet.

EventSubscriber nicht registriert

Ohne korrekte services.yml wird der EventSubscriber nicht geladen. drush cr nach jeder Änderung.

JSON-Format im Report-To fehlerhaft

Der Report-To-Header erwartet valides JSON. Prüfen Sie die JSON-Syntax mit einem Validator. Fehlerhaftes JSON wird vom Browser still ignoriert.

drush cr nach EventSubscriber-Änderung

Der Internal Page Cache liefert gecachte Header aus. Nach jeder Änderung am Reporting EventSubscriber oder der services.yml ist drush cr zwingend erforderlich.

Compliance-Relevanz

Die Reporting API ermöglicht automatisches Security-Violation-Monitoring direkt aus dem Browser — ein wichtiger Baustein für die Erkennung und Meldung von Sicherheitsvorfällen.

NIS2Art. 21(b) — Bewältigung von Sicherheitsvorfällen, automatische Erkennung
PCI DSS10.x — Protokollierung und Überwachung sicherheitsrelevanter Ereignisse

Zusammenfassung

Die Reporting API in Drupal erfordert einen Custom EventSubscriber, da seckit diese Header nicht unterstützt. Setzen Sie sowohl Reporting-Endpoints (neue API) als auch Report-To (Fallback) und richten Sie einen Endpoint ein, der die JSON-Reports empfängt.

Für die einfachste Einrichtung nutzen Sie einen externen Service wie report-uri.com.

Wie steht Ihre Domain bei Reporting API?

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