Der HTTP-Header X-Frame-Options
sorgt dafür, dass deine Website nicht einfach in fremde Seiten eingebettet werden kann – und schützt so vor Angriffen wie Clickjacking oder UI-Spoofing.
Das steckt im Detail hinter X-Frame-Options
X-Frame-Options
gehört zu den älteren, aber immer noch weit verbreiteten Sicherheitsmechanismen im Web. Er wird eingesetzt, um zu kontrollieren, ob und von wem eine Seite in einem <iframe>
angezeigt werden darf.
Warum das wichtig ist?
Weil sich mit sogenannten Clickjacking-Angriffen Benutzer:innen täuschen lassen: Eine legitime Website wird in ein unsichtbares iFrame gepackt, und darüber werden Klicks oder Eingaben auf manipulierte Inhalte geleitet – ohne dass man es sieht.
Beispiel:
Ein eingebettetes Formular sieht aus wie eine Umfrage, ist in Wahrheit aber eine unsichtbare PayPal-Überweisung.
Die drei Varianten des Headers
X-Frame-Options: DENY
→ Die Seite darf nirgendwo eingebettet werden – weder auf der eigenen noch auf fremden Domains.
X-Frame-Options: SAMEORIGIN
→ Die Seite darf nur auf derselben Domain eingebettet werden – z. B. für Admin-Vorschauen oder interne Tools.
X-Frame-Options: ALLOW-FROM uri` (veraltet)
→ Theoretisch erlaubte Einbettung von einer bestimmten Domain – wird aber kaum noch unterstützt und ist nicht mehr empfohlen.
X-Frame-Options In der Praxis
Viele Frameworks und CMS setzen standardmäßig DENY
– was gut ist, aber auch zu Problemen führen kann. Zum Beispiel, wenn du wie bei SuluCMS im Backend eine Vorschau in einem iFrame brauchst. Die bessere Lösung in solchen Fällen:
X-Frame-Options: SAMEORIGIN
Das erlaubt Einbettungen innerhalb deiner eigenen Domain, blockiert aber alles, was von außen kommt – eine ausgewogene Kombination aus Sicherheit und Flexibilität.
Langfristig ersetzt der CSP-Header frame-ancestors
diese Funktion – aber X-Frame-Options
bleibt in vielen Fällen der einfachste Weg, sich gegen Einbettungs-Angriffe zu schützen.