X-Frame-Options für WordPress konfigurieren
Schritt-für-Schritt-Anleitung: X-Frame-Options und CSP frame-ancestors in WordPress einrichten — per functions.php, .htaccess oder Plugin.
Clickjacking-Schutz in WordPress
X-Frame-Options verhindert, dass Ihre WordPress-Website in fremden iFrames eingebettet wird. WordPress setzt den Header automatisch nur für den Admin-Bereich — das Frontend bleibt ungeschützt. Setzen Sie den Header über functions.php oder .htaccess und kombinieren Sie ihn mit CSP frame-ancestors für Defense-in-Depth. Alternativ können Plugins wie "HTTP Headers" den Header über das Dashboard konfigurieren.
X-Frame-Options ist mit 10 von 166 Punkten ein Faktor im Wolf-Agents Web Security Check. Die Konfiguration dauert weniger als 5 Minuten.
X-Frame-Options und frame-ancestors konfigurieren
Fügen Sie den folgenden Code in die functions.php Ihres Child-Themes ein. Die Funktion setzt sowohl X-Frame-Options als auch frame-ancestors für Defense-in-Depth. Verwenden Sie SAMEORIGIN, damit der WordPress-Customizer weiterhin funktioniert.
// Clickjacking-Schutz — Defense-in-Depth
function set_clickjacking_protection_headers() {
header('X-Frame-Options: SAMEORIGIN');
header("Content-Security-Policy: frame-ancestors 'self'");
}
add_action('send_headers', 'set_clickjacking_protection_headers'); Wenn Sie bereits andere Security Header per .htaccess setzen, können Sie X-Frame-Options dort hinzufügen. Die .htaccess-Methode ist performanter, da der Header auf Webserver-Ebene gesetzt wird:
# Clickjacking-Schutz — Defense-in-Depth
<IfModule mod_headers.c>
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Content-Security-Policy "frame-ancestors 'self'"
</IfModule> Header verifizieren
Rufen Sie Ihre Website auf und prüfen Sie den Header mit curl. Testen Sie sowohl das Frontend als auch den Customizer — bei SAMEORIGIN sollte beides funktionieren.
# X-Frame-Options-Header prüfen
curl -sI https://ihre-domain.de | grep -i x-frame
# Erwartete Ausgabe:
# X-Frame-Options: SAMEORIGIN
# frame-ancestors prüfen
curl -sI https://ihre-domain.de | grep -i content-security
# Erwartete Ausgabe:
# Content-Security-Policy: frame-ancestors 'self' SAMEORIGIN sollte die Vorschau weiterhin funktionieren. Bei DENY wird die Vorschau blockiert. Wie steht Ihre Domain bei X-Frame-Options?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.
Häufig gestellte Fragen
Setzt WordPress X-Frame-Options automatisch?
WordPress setzt X-Frame-Options: SAMEORIGIN nur für den Admin-Bereich (/wp-admin/) über die send_frame_options_header()-Funktion. Das Frontend ist standardmäßig nicht geschützt — Sie müssen den Header manuell setzen.
functions.php oder .htaccess — was ist besser?
Beide Methoden funktionieren. functions.php ist flexibler (PHP-Logik möglich), .htaccess ist performanter (wird auf Webserver-Ebene gesetzt). Wenn Sie bereits andere Security Header per .htaccess setzen, fügen Sie X-Frame-Options dort hinzu.
Welches Plugin kann X-Frame-Options setzen?
Plugins wie "HTTP Headers", "Security Headers" oder "All In One WP Security" können X-Frame-Options über das Dashboard konfigurieren. Für einen einfachen Header ist ein Plugin aber überdimensioniert — die functions.php- oder .htaccess-Methode genügt.
Kann X-Frame-Options den WordPress-Customizer kaputt machen?
Ja, mit DENY. Der WordPress-Customizer bettet die Website in einem iFrame ein. Verwenden Sie SAMEORIGIN statt DENY, damit der Customizer funktioniert. frame-ancestors 'self' hat denselben Effekt.
Muss ich beide Header setzen oder reicht einer?
Setzen Sie beide Header für maximale Kompatibilität. X-Frame-Options ist der Fallback für älteste Clients, CSP frame-ancestors der moderne Standard. Bei Konflikten priorisieren Browser frame-ancestors. Defense-in-Depth: Beide Header parallel setzen.