Mixed Content tritt auf, wenn eine ueber eine sichere HTTPS-Verbindung geladene Webseite Ressourcen (Bilder, Skripte, Stylesheets, Schriftarten, iframes) einbindet, die ueber eine unsichere HTTP-Verbindung geladen werden. Das ist ein Sicherheitsproblem, weil die HTTP-Ressourcen von einem Angreifer abgefangen, veraendert oder ersetzt werden koennen, obwohl die Hauptseite selbst verschluesselt ist. Das Schloss-Symbol im Browser verschwindet, und Besucher sehen Warnungen, die ihr Vertrauen in deine Seite untergraben.
Passiver vs. aktiver Mixed Content
Browser unterscheiden zwischen zwei Kategorien von Mixed Content und behandeln jede unterschiedlich:
- Passiver (Anzeige-) Mixed Content: Dazu gehoeren Bilder, Audio und Video, die ueber HTTP geladen werden. Das Risiko ist geringer, weil diese Ressourcen das Verhalten der Seite nicht direkt aendern koennen. Ein Angreifer koennte ein Bild austauschen, aber keinen Code einschleusen. Aeltere Browser luden passiven Mixed Content mit einer Warnung. Moderne Browser blockieren ihn zunehmend ebenfalls, obwohl einige ihn noch mit einem verschlechterten Sicherheitsindikator erlauben.
- Aktiver Mixed Content: Dazu gehoeren Skripte, Stylesheets, iframes, Schriftarten und XMLHttpRequests, die ueber HTTP geladen werden. Aktiver Mixed Content ist weitaus gefaehrlicher, weil ein manipuliertes Skript Login-Daten stehlen, den Nutzer umleiten oder Malware in die Seite einschleusen kann. Alle modernen Browser blockieren aktiven Mixed Content standardmaessig. Die Ressource wird einfach nicht geladen, was die Seitenfunktionalitaet komplett beeintraechtigen kann.
Wie Browser mit Mixed Content umgehen
Das Browserverhalten ist ueber die Jahre strenger geworden. So sieht es heute aus:
- Chrome: Blockiert allen aktiven Mixed Content. Seit Version 80 aktualisiert Chrome auch gemischte Bilder, Audio und Video automatisch auf HTTPS. Wenn die HTTPS-Version nicht existiert, wird die Ressource blockiert.
- Firefox: Blockiert aktiven Mixed Content und zeigt ein Schild-Symbol in der Adressleiste an. Passiver Mixed Content loest eine Warnung aus, kann aber in einigen Faellen noch geladen werden.
- Safari: Blockiert aktiven Mixed Content. Passiver Mixed Content kann je nach Version mit einer Warnung geladen werden.
- Edge: Folgt demselben Chromium-basierten Verhalten wie Chrome.
Der Trend ist klar: Browser bewegen sich in Richtung Blockierung aller Mixed-Content-Inhalte, sowohl aktiver als auch passiver. Mixed Content zu beheben ist keine Option mehr.
Mixed-Content-Quellen finden
Es gibt mehrere Moeglichkeiten, Mixed Content auf deiner WordPress-Seite zu identifizieren:
- Browser-DevTools-Konsole: Oeffne Chrome DevTools (F12), gehe zum Konsolen-Tab und suche nach gelben Warnungen oder roten Fehlern zu Mixed Content. Chrome zeigt dir genau, welche Ressourcen-URL das Problem verursacht.
- Why No Padlock: Ein kostenloses Online-Tool (whynopadlock.com), das eine URL scannt und alle unsicheren Ressourcen auf der Seite auflistet. Nuetzlich fuer eine schnelle Pruefung ohne DevTools.
- InspectWP-Berichte: InspectWP scannt deine Seite automatisch nach allen Ressourcen, die ueber HTTP auf einer HTTPS-Seite geladen werden, und listet jede einzelne auf. Das ist der schnellste Weg, ein vollstaendiges Bild deiner gesamten Seite zu bekommen.
- SSL Labs: Primaer ein SSL/TLS-Konfigurationsprufer, kann aber auch Mixed-Content-Probleme auf der getesteten Seite aufzeigen.
Haeufige Ursachen von Mixed Content in WordPress
Mixed-Content-Probleme in WordPress stammen typischerweise aus wenigen wiederkehrenden Quellen:
- Fest codierte HTTP-URLs im Content: Wenn du deine Seite von HTTP auf HTTPS migriert hast, enthalten deine alten Beitraege und Seiten moeglicherweise noch Bild-URLs und Links, die mit
http://beginnen. Diese waren zum Zeitpunkt der Erstellung korrekt, wurden aber nach der Migration zu Mixed Content. - Alte Theme-Assets: Manche aelteren Themes oder Child Themes haben fest codierte HTTP-URLs in ihren CSS-, JavaScript- oder Template-Dateien. Ein Stylesheet, das ein Hintergrundbild von
http://example.com/bg.jpglaedt, erzeugt Mixed Content. - Plugin-Ressourcen: Plugins, die externe Skripte oder Styles ueber HTTP laden, verursachen Mixed Content. Das ist besonders haeufig bei aelteren oder schlecht gewarteten Plugins, die nicht fuer HTTPS aktualisiert wurden.
- Externe Einbettungen: Iframes, eingebettete Videos oder Widgets von Drittanbieter-Diensten, die HTTP-URLs verwenden. Wenn der Drittanbieter HTTPS unterstuetzt (die meisten tun es heute), loest ein Wechsel der URL auf HTTPS das Problem.
- CDN-Konfiguration: Wenn dein CDN nicht konfiguriert ist, Assets ueber HTTPS auszuliefern, wird jede CSS-, JS- und Bilddatei, die ueber das CDN geliefert wird, zu Mixed Content.
Mixed Content in WordPress beheben
Die Loesung haengt von der Quelle des Problems ab. Hier sind die gaengigsten Loesungen:
- Datenbank-URL-Ersetzung: Fuer fest codierte HTTP-URLs im Beitragsinhalt verwende ein Suchen-und-Ersetzen-Tool, um alle Instanzen von
http://deinedomain.dedurchhttps://deinedomain.dein der Datenbank zu aktualisieren. Das Plugin Better Search Replace wird dafuer haeufig verwendet. Es laesst dich Aenderungen vor der Anwendung pruefen und funktioniert ueber alle Datenbanktabellen. Erstelle immer ein Datenbank-Backup, bevor du ein Suchen-und-Ersetzen ausfuehrst. - SSL Insecure Content Fixer: Dieses WordPress-Plugin behebt unsichere URLs automatisch on-the-fly. Es schreibt HTTP-URLs im Seitenoutput zu HTTPS um, ohne die Datenbank zu aendern. Eine gute temporaere Loesung, waehrend du die eigentlichen Ursachen behebst, aber es fuegt einen kleinen Performance-Overhead hinzu.
- Really Simple SSL: Ein weiteres beliebtes Plugin, das den HTTP-zu-HTTPS-Uebergang handhabt. Es behebt Mixed Content durch Filterung des Seitenoutputs, richtet Redirects ein und aktualisiert die WordPress-Seiten-URL-Einstellungen.
- Manuelle Theme- und Plugin-Fixes: Wenn der Mixed Content aus einer Theme- oder Plugin-Datei stammt, bearbeite den Quellcode und ersetze
http://durchhttps://oder verwende, noch besser, protokoll-relative URLs (//example.com/datei.js) oder die WordPress-Funktionesc_url(), um URLs dynamisch zu generieren.
Datenbank-URL-Ersetzung im Detail
Der gruendlichste Weg, Mixed Content aus altem Beitragsinhalt zu beheben, ist ein Datenbank-Suchen-und-Ersetzen. So geht der Prozess:
- Erstelle ein Backup deiner Datenbank. Das ist nicht optional; ein falsches Suchen-und-Ersetzen kann deine gesamte Seite kaputt machen.
- Installiere und aktiviere das Better Search Replace Plugin.
- Suche nach
http://deinedomain.deund ersetze durchhttps://deinedomain.de. - Waehle alle Datenbanktabellen (besonders
wp_posts,wp_postmetaundwp_options). - Fuehre zuerst einen Trockenlauf durch, um zu sehen, wie viele Ersetzungen vorgenommen wuerden.
- Wenn die Zahlen richtig aussehen, fuehre die tatsaechliche Ersetzung durch.
Fuer WP-CLI-Nutzer macht der Befehl wp search-replace 'http://deinedomain.de' 'https://deinedomain.de' --all-tables dasselbe ueber die Kommandozeile. WP-CLI behandelt serialisierte Daten in der Datenbank korrekt, was fuer Options- und Widget-Einstellungen entscheidend ist.
HTTPS-Redirect per .htaccess
Nachdem du Mixed Content behoben hast, stelle sicher, dass alle HTTP-Anfragen an deine Seite auf HTTPS umgeleitet werden. Das verhindert, dass Besucher und Suchmaschinen auf die HTTP-Version zugreifen. Auf Apache-Servern fuege diese Zeilen in deine .htaccess-Datei ein:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]Auf Nginx-Servern fuege dies in deinen Server-Block ein:
server {
listen 80;
server_name deinedomain.de www.deinedomain.de;
return 301 https://$server_name$request_uri;
}Dieser Redirect behebt Mixed Content nicht allein, stellt aber sicher, dass niemand versehentlich die HTTP-Version deiner Seite besucht. Zusammen mit der Datenbank-URL-Ersetzung und den Plugin-Fixes vervollstaendigt er die HTTPS-Migration.
Was InspectWP prueft
InspectWP scannt deine Seite nach allen Ressourcen, die ueber HTTP auf einer HTTPS-Seite geladen werden, und listet jede einzelne auf, einschliesslich Ressourcentyp und vollstaendiger URL. Das gibt dir eine klare Checkliste, was genau behoben werden muss. Seiten ohne Mixed-Content-Probleme zeigen ein sauberes Ergebnis, das bestaetigt, dass dein HTTPS-Setup korrekt funktioniert.