← Wszystkie testy
BezpieczeństwoTypowa waga: Wysoki

Skaner niebezpiecznych formularzy

Wykrywa formularze haseł serwowane przez HTTP lub wysyłające dane logowania na niezaszyfrowany URL.

Co sprawdza

Ten skaner wykrywa formularze haseł serwowane przez HTTP albo wysyłające dane uwierzytelniające na niezaszyfrowany adres URL. Wskazuje formularze, w których dane wpisywane przez użytkownika podróżują bez ochrony.

Dlaczego to ważne

Gdy formularz logowania podróżuje bez szyfrowania, każdy w tej samej sieci może przechwycić wpisywaną nazwę użytkownika i hasło. To bezpośrednio wystawia konta twoich użytkowników na kradzież danych logowania.

Jak to naprawić

Upewnij się, że każda strona z formularzami jest serwowana przez HTTPS i że cel formularza (atrybut action) także wskazuje na adres URL z HTTPS. Serwowanie całej witryny przez HTTPS i wymuszenie przekierowania to najprostszy sposób, by to pokryć.

Jak działa ta kontrola

Scanaris analizuje HTML Twojej strony głównej i szuka formularzy zawierających pole <input type="password">: logowanie, rejestrację, zmianę hasła. Jeśli nie ma żadnego, nic nie robi. Jeśli jest, sprawdza dwie rzeczy. Po pierwsze: jeśli sama strona została wysłana przez HTTP, otwiera ustalenie o wysokiej wadze, bo wszystko, co użytkownik wpisze, podróżuje bez szyfrowania. Po drugie: jeśli strona jest HTTPS, ale atrybut action formularza zaczyna się od http://, otwiera kolejne ustalenie o wysokiej wadze z tym adresem, bo samo wysłanie hasła wychodzi niezaszyfrowane, mimo że strona, która o nie prosi, była bezpieczna. Badana jest tylko skanowana strona; jeśli Twoje logowanie mieszka pod inną ścieżką, zeskanuj ją bezpośrednio.

Dlaczego to ważne

Hasło to najcenniejsza rzecz, jaką powierza Ci użytkownik, i to ją połączenia bez szyfrowania traktują najgorzej. Gdy formularz podróżuje przez HTTP, każdy po drodze (wifi w kawiarni, dostawca internetu, przejęty router) czyta login i hasło jak są, bez żadnej techniki. A ponieważ większość ludzi używa tych samych haseł w wielu miejscach, wycieka nie tylko dostęp do Twojej strony. Przeglądarki to wiedzą: Chrome i Firefox oznaczają na czerwono każde pole hasła na stronie HTTP i ostrzegają użytkownika, że „nie jest bezpieczna", więc oprócz realnego ryzyka to widoczna utrata zaufania.

Dlaczego tak się dzieje

Pierwszy przypadek pojawia się, gdy strona nie przekierowuje z HTTP na HTTPS i ktoś wchodzi przez stary link. Drugi to prawie zawsze action wpisany ręcznie podczas rozwoju (http://localhost:3000/login albo http://api.mojadomena.pl/auth), którego nikt nie zmienił, albo formularz skopiowany z przykładu. Zdarza się też, gdy logowanie wskazuje na zewnętrzną usługę, która nie ma jeszcze certyfikatu.

Jak to naprawić

  • Serwuj całą stronę przez HTTPS i przekierowuj HTTP. To podstawa wszystkiego innego; kontrola przekierowanie HTTPS mówi Ci, czy ją masz. Na Vercel, Netlify czy Cloudflare jest gotowe; na własnym serwerze blok przekierowania w nginx lub Apache.
  • Zmień action na ścieżkę względną (action="/login"), która dziedziczy protokół strony, albo na pełny adres z https://. Jeśli używasz frameworka (Nuxt, Next.js, Laravel, Django), adres API powinien pochodzić ze zmiennej środowiskowej z wartością produkcyjną, a nie być wpisany w szablonie.
  • Jeśli logowanie obsługuje zewnętrzny dostawca (Auth0, Supabase, Firebase, Clerk), jego endpoint jest już HTTPS; ustalenie wskazuje wtedy na własny action, który jest tam zbędny.
  • Dodaj HSTS, żeby przeglądarka nigdy więcej nie próbowała HTTP, nawet przy pierwszym skoku; mierzy to słaby HSTS.

Sprawdź, czy naprawione

curl -sI http://twojadomena.pl/login | grep -iE "^(HTTP|location)"
curl -s https://twojadomena.pl/login | grep -oE '<form[^>]*action="[^"]*"' 

Pierwsze musi zwrócić 301 na https://. W drugim żaden action nie może zaczynać się od http://; normalnie widać ścieżki względne albo nic (formularze bez action wysyłają na tę samą stronę).

Często zadawane pytania

Mój formularz wysyła przez JavaScript, nie przez action. Czy to mnie dotyczy?

Ta kontrola patrzy na atrybut action, więc formularz robiący fetch nie jest tą drogą oznaczany. Ale ryzyko jest takie samo, jeśli fetch wskazuje na http://: na stronie HTTPS przeglądarka zablokuje go jako mieszaną treść, a na stronie HTTP pójdzie jawnym tekstem. Sprawdź adres API tak czy inaczej.

To tylko środowisko testowe bez prawdziwych użytkowników.

W takim razie nie skanuj go jak produkcji albo zaakceptuj ustalenie. Ale uważaj na środowiska testowe, które trafiają do Google: jeśli ktoś założy tam konto ze swoim zwykłym hasłem, problem jest prawdziwy.

Czy pole hasła na stronie HTTPS z względnym action jest w porządku?

Tak. To poprawna konfiguracja i nie generuje ustalenia. Zostaje sprawdzić, jak potem przechowujesz sesję: niebezpieczne ciasteczka i token w pamięci przeglądarki pokrywają tę część.

Sprawdź to na swojej stronie

Przeskanuj swoją stronę za darmo i zobacz, czy ten i 44 inne testy przechodzą, z promptem naprawczym dla każdego problemu.

Przeskanuj moją stronę za darmo

Powiązane testy