Clickjacking-Schutz: X-Frame-Options und frame-ancestors richtig setzen
Fehlen X-Frame-Options und CSP-frame-ancestors, lässt sich Ihre Seite unsichtbar in fremde Websites einbetten. So erkennen und beheben Sie das Clickjacking-Risiko.
Inhaltsverzeichnis
Fehlen sowohl der X-Frame-Options-Header als auch eine CSP-Direktive frame-ancestors, kann jede beliebige Website Ihre Seite in einen unsichtbaren iframe einbetten. EverAudit meldet das als Sicherheitsbefund in der Kategorie „Security-Header".
Was ist das Problem?#
Ohne diese Schutzmaßnahme lässt sich eine Seite technisch problemlos per <iframe> in eine andere Website einbetten — inklusive aller ihrer interaktiven Elemente wie Buttons, Formulare oder Links. Ein Angreifer kann diesen iframe unsichtbar machen und über eine eigene, harmlos wirkende Seite legen, sodass Klicks der Besucher tatsächlich auf der eingebetteten fremden Seite landen.
Geschützt wird das über zwei mögliche Header:
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: frame-ancestors 'self'
SAMEORIGIN bzw. 'self' erlaubt das Einbetten nur durch Seiten der eigenen Domain. Fehlen beide Header, gibt es keine Einschränkung — jede fremde Seite darf einbetten.
Warum prüft EverAudit das?#
EverAudit prüft bei jeder gecrawlten Seite die HTTP-Response-Header auf X-Frame-Options und eine gegebenenfalls vorhandene frame-ancestors-Direktive in der Content-Security-Policy. Nur wenn beide fehlen, wird der Befund gemeldet — ist einer der beiden Mechanismen korrekt gesetzt, ist der Schutz bereits wirksam.
Der Befund wird mit hoher Priorität eingestuft, weil Clickjacking eine klassische, gut dokumentierte Angriffsart ist, gegen die sich Website-Betreiber mit minimalem Aufwand vollständig absichern können.
Welche Auswirkung hat das?#
Fehlt der Clickjacking-Schutz, können Angreifer Besucher zu Handlungen verleiten, die sie so nie bewusst ausgeführt hätten — etwa das Bestätigen einer Zahlung, das Ändern von Kontoeinstellungen, das Erteilen von Berechtigungen oder das versehentliche Liken/Folgen auf einer Plattform. Die eingebettete Original-Seite bleibt dabei unverändert; nur die Darstellung wird manipuliert.
Für Besucher ist die Täuschung praktisch nicht erkennbar, da die eigentliche Interaktion technisch korrekt auf der echten Seite stattfindet — sie sehen lediglich die falsche Oberfläche darüber. Für den Seitenbetreiber bedeutet ein erfolgreicher Angriff über die eigene, eigentlich vertrauenswürdige Seite einen Vertrauens- und im Zweifel auch einen Reputationsschaden, selbst wenn die Seite selbst nicht kompromittiert wurde.
Wie beheben Sie das?#
Setzen Sie mindestens einen der beiden Header serverseitig — CMS-unabhängig direkt am Ursprungsserver oder CDN:
- Nginx:
add_header X-Frame-Options "SAMEORIGIN" always; - Apache:
Header always set X-Frame-Options "SAMEORIGIN" - Node/Express:
res.setHeader('X-Frame-Options', 'SAMEORIGIN')oder perhelmet. - Über CSP (moderner, feingranularer):
Content-Security-Policy: frame-ancestors 'self' https://partner-domain.example— erlaubt gezielt auch bestimmte Partnerdomains, was X-Frame-Options allein nicht kann.
Prüfen Sie zuerst, ob es einen legitimen Grund gibt, die Seite in fremden Kontexten einzubetten (z. B. ein eingebettetes Widget für Partnerseiten). Ist das nicht der Fall, ist DENY bzw. frame-ancestors 'none' die strengste und sicherste Einstellung. Wird die Seite ausschließlich innerhalb der eigenen Domain eingebettet — etwa in einem eigenen Dashboard —, ist SAMEORIGIN bzw. frame-ancestors 'self' der richtige Kompromiss. Testen Sie nach der Änderung, dass alle gewollten Einbettungen weiterhin funktionieren.
Fazit#
Clickjacking-Schutz gehört zu den am einfachsten umsetzbaren Sicherheitsmaßnahmen: eine einzige Header-Zeile verhindert, dass Ihre Seite unbemerkt als Werkzeug für Täuschungsangriffe missbraucht wird. Ohne triftigen Grund fürs Einbetten in fremde Websites spricht nichts gegen die strikteste Einstellung.
Häufige Fragen
Was ist Clickjacking?
Clickjacking bettet eine fremde, unsichtbar gemachte Seite in ein iframe ein und legt sie über einen scheinbar harmlosen Button. Besucher klicken dadurch unwissentlich auf Elemente der eingebetteten Seite statt auf das, was sie sehen.
Was ist der Unterschied zwischen X-Frame-Options und frame-ancestors?
X-Frame-Options ist der ältere, einfachere Header mit den Werten DENY oder SAMEORIGIN. Die CSP-Direktive frame-ancestors ist der modernere Nachfolger, erlaubt feingranularere Regeln und wird von aktuellen Browsern bevorzugt ausgewertet.
Reicht einer der beiden Mechanismen aus?
Ja, ein einzelner korrekt gesetzter Header genügt technisch. In der Praxis werden aber oft beide parallel gesetzt, damit auch ältere Browser abgedeckt sind, die frame-ancestors noch nicht auswerten.
Muss ich meine Seite komplett vor dem Einbetten sperren?
Nein, nur wenn kein legitimer Grund fürs Einbetten besteht. Soll die Seite gezielt in eigenen oder ausgewählten Partnerseiten eingebettet werden dürfen, lässt sich das über SAMEORIGIN oder eine Liste erlaubter Quellen in frame-ancestors abbilden.
EverAudit Redaktion
Fachredaktion für Web-Qualität, Barrierefreiheit und DSGVO. Wir prüfen jeden Ratgeber gegen die Kriterien unserer Audit-Engine.