Prihlasovací formulár cez nešifrované HTTP

Čo to je

Niekde na vašom webe je formulár s poľom type="password" a jeho akcia (action=) smeruje na nešifrovanú http:// URL. Zadané heslo putuje cez sieť otvorene.

Toto sa objavuje typicky na:

Prečo je to problém

Keď používateľ zadá heslo a stlačí Enter, prehliadač ho pošle v plain texte. Ktokoľvek medzi (ne­dô­veryhodná Wi-Fi, ISP, sused na hostingu, kompromitovaný router) heslo prečíta. Ak je formulár na inom hostname než stránka samotná, prehliadač bude varovať — ale používateľ typicky klikne „Pokračovať“.

Chrome od verzie 86 ukazuje „Tento formulár nie je zabezpečený“ priamo pod inputom. Konverzia padá, ľudia sa neregistrujú.

Ako to opraviť

Krok 1 — opraviť action=

Nájdite v HTML všetky <form> tagy a zmeňte action="http://..." na action="https://..." alebo lepšie na relatívnu cestu (action="/login") — tá zdedí protokol stránky.

Krok 2 — vynútiť HTTPS na celom webe

Aj keď opravíte konkrétny formulár, návštevník sa k nemu môže dostať cez http://. Server musí presmerovať — pozri Web beží len na HTTP.

Krok 3 — HSTS

Po nasadení HSTS prehliadač prestane vôbec nadväzovať HTTP spojenie — aj keby používateľ napísal http://example.sk. Detail pozri Strict-Transport-Security.

Krok 4 — subdomény

Ak je admin alebo legacy na subdoméne, dajte certifikát aj na ňu. Wildcard certifikát od Let’s Encrypt (*.example.sk) rieši všetko.

Overenie

# v prehliadači otvoriť DevTools → Network → odoslať formulár
# request URL musí začínať https://

Referencie