Clickjacking-Schutz in Drupal konfigurieren

X-Frame-Options in Drupal einrichten — per seckit Clickjacking-Tab, EventSubscriber oder .htaccess. Verhindert, dass Ihre Website in fremden iframes eingebettet wird.

Drupal · Schritt für Schritt

Clickjacking-Schutz in Drupal

X-Frame-Options verhindert, dass Ihre Website in fremden <iframe>-Elementen eingebettet wird. Ohne diesen Schutz können Angreifer Ihre Seite unsichtbar über einer anderen Seite platzieren und Benutzer zu ungewollten Klicks verleiten (Clickjacking). Der Header bringt 10 von 166 Punkten im Wolf-Agents Web Security Check.

In Drupal ist seckit die schnellste Methode — ein Radio-Button im Clickjacking-Tab genügt. Alternativ setzen Sie den Header per EventSubscriber oder .htaccess. Für maximalen Schutz kombinieren Sie X-Frame-Options mit frame-ancestors in der Content Security Policy.

Implementierung

seckit bietet den schnellsten Weg — ein Radio-Button unter dem Clickjacking-Tab. SAMEORIGIN erlaubt das Einbetten nur von der eigenen Domain, DENY verbietet das Einbetten komplett.

seckit (empfohlen)
/admin/config/system/seckitEmpfohlen
# seckit: /admin/config/system/seckit → Tab "Clickjacking"
# Optionen:
 Disabled
 SAMEORIGIN (empfohlen)
 DENY

# Speichern → drush cr
EventSubscriber
XFrameSubscriber.phpCustom
<?php
// modules/custom/security_headers/src/EventSubscriber/XFrameSubscriber.php

namespace Drupal\security_headers\EventSubscriber;

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

class XFrameSubscriber implements EventSubscriberInterface {

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

  public function onResponse(ResponseEvent $event) {
    $response = $event->getResponse();
    $response->headers->set('X-Frame-Options', 'SAMEORIGIN');
  }
}
.htaccess
.htaccessFallback
# .htaccess — X-Frame-Options
<IfModule mod_headers.c>
  Header always set X-Frame-Options "SAMEORIGIN"
</IfModule>

Verifizierung

Cache leeren und den Header per curl prüfen.

TerminalVerifizierung
# Cache leeren und Header prüfen
drush cr
curl -sI https://ihre-domain.de | grep -i x-frame-options

# Erwartete Ausgabe:
# x-frame-options: SAMEORIGIN

Häufige Fehler

seckit überschreibt manuell gesetzte Header

Wenn seckit den Clickjacking-Schutz aktiviert hat und Sie gleichzeitig einen EventSubscriber nutzen, können doppelte Header entstehen. Deaktivieren Sie eine der beiden Methoden.

drush cr vergessen

Nach seckit-Konfigurationsänderungen ist ein drush cr zwingend erforderlich. Der Internal Page Cache liefert sonst den alten Header aus.

DENY bricht eigene iframes

Wenn Ihre Website eigene Inhalte per iframe einbettet (z.B. für Print-Vorschauen), bricht DENY diese Funktion. Nutzen Sie stattdessen SAMEORIGIN.

Compliance-Relevanz

NIS2Art. 21(e) — Sicherheit bei Entwicklung und Wartung von Informationssystemen
BSIAPP.3.1 — Webserver-Absicherung mit Security Headern

Wie steht Ihre Domain bei Clickjacking-Schutz?

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