Anmeldeformular über unverschlüsseltes HTTP

Worum es geht

Irgendwo auf Ihrer Website gibt es ein Formular mit einem Feld type="password" und dessen Aktion (action=) zeigt auf eine unverschlüsselte http:// URL. Das eingegebene Passwort wird offen über das Netz übertragen.

Das tritt typischerweise auf bei:

Warum das ein Problem ist

Wenn der Nutzer ein Passwort eingibt und Enter drückt, sendet der Browser es im Klartext. Jeder dazwischen (ein nicht ver­trauens­würdiges WLAN, der ISP, ein Hosting-Nachbar, ein kompromittierter Router) kann das Passwort mitlesen. Wenn das Formular auf einem anderen Hostnamen liegt als die Seite selbst, warnt der Browser zwar — aber der Nutzer klickt typischerweise auf „Fortfahren“.

Chrome zeigt seit Version 86 „Dieses Formular ist nicht sicher“ direkt unter dem Eingabefeld. Die Konversion bricht ein, die Leute registrieren sich nicht.

Wie man es behebt

Schritt 1 — action= korrigieren

Suchen Sie im HTML alle <form>-Tags und ändern Sie action="http://..." zu action="https://..." oder besser zu einem relativen Pfad (action="/login") — dieser erbt das Protokoll der Seite.

Schritt 2 — HTTPS auf der gesamten Website erzwingen

Selbst wenn Sie das konkrete Formular korrigieren, kann ein Besucher es über http:// erreichen. Der Server muss umleiten — siehe Website läuft nur über HTTP.

Schritt 3 — HSTS

Nach dem Aktivieren von HSTS baut der Browser überhaupt keine HTTP-Verbindung mehr auf — selbst wenn der Nutzer http://example.cz eintippt. Details siehe Strict-Transport-Security.

Schritt 4 — Subdomains

Wenn Admin oder Legacy auf einer Subdomain liegen, statten Sie auch diese mit einem Zertifikat aus. Ein Wildcard-Zertifikat von Let’s Encrypt (*.example.cz) löst alles.

Überprüfung

# im Browser DevTools öffnen → Network → Formular absenden
# die Request-URL muss mit https:// beginnen

Referenzen