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.

WordPress · Schritt für Schritt

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.

1 Schritt 1 von 2

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.

functions.php Produktiv
// 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');
Alternative: .htaccess

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:

.htaccess Alternative
# 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>
2 Schritt 2 von 2

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.

Terminal Verifizieren
# 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'
Prüfen Sie nach der Änderung auch den WordPress-Customizer (Design > Customizer). Mit 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.