Czy Twoja aplikacja martwi się o bezpieczeństwo? 3 błędy w strategii uwierzytelniania
Bezpieczeństwo aplikacji to nie firewall ani certyfikat SSL. To sposób, w jaki zarządzasz tożsamością użytkownika. Wiele firm inwestuje w fancy rozwiązania, ale zapomina o podstawach uwierzytelniania. Efekt? Dane klientów wyciekają, a reputacja firmy leży w gruzach.
W tym artykule pokażę trzy realne błędy, które widzę na co dzień w consulting’u. Żaden z nich nie wymaga skomplikowanej wiedzy hakerskiej – to zwykłe przeoczenia, które kosztują majątek.
Błąd 1: Uwierzenie, że JWT to bezpieczna szyba
JWT (JSON Web Token) to popularny standard uwierzytelniania. Problem w tym, że większość implementacji traktuje go jak magiczną kapsułę. Deweloperzy zakładają, że token jest bezpieczny, bo jest podpisany.
Przykład z życia: Firma e-commerce używała JWT przechowywanego w localStorage. Token miał czas ważności 7 dni. Atak XSS (wstrzyknięcie skryptu) wystarczył, by wyciekły dane wszystkich zalogowanych klientów. Dlaczego? Bo skrypt na stronie odczytał localStorage i wysłał token na zewnątrz. Proste, prawda?
Rozwiązanie: JWT powinien być przechowywany w ciasteczku z flagą HttpOnly. To uniemożliwia odczytanie tokena przez JavaScript. Po drugie – tokeny odświeżania i dostępowe to dwie różne rzeczy. Token odświeżania powinien być długowieczny, ale zabezpieczony, a token dostępowy – krótkotrwały (np. 15 minut).
Lekcja: Nie ufaj tokenom jak banknotowi. One są jak klucze – trzeba je przechowywać w sejfie.
Błąd 2: Zapominanie o rate limitowaniu logowania
To klasyk. Strona startowa firmy B2B – formularz logowania, żadnego captchy, żadnego ograniczenia prób. Ktoś uruchamia skrypt i próbuje 10 000 haseł na sekundę. Po 2 minutach ma dostęp do konta prezesa. Czemu? Bo hasło było „admin123”.
Rate limiting to najtańsze ubezpieczenie. W praktyce wystarczy ograniczyć liczbę prób z jednego IP do 5 na minutę (z blokadą na 15 minut). Dla większej ochrony – wprowadź opóźnienie wykładnicze: po każdym błędzie czekasz coraz dłużej.
Przykład: Bankowość internetowa stosuje cooldown po 3 nieudanych logowaniach. Czemu nie wszyscy? Bo programiści boją się, że zirytują użytkownika. Prawda jest taka, że legalny użytkownik rzadko myli hasło 10 razy pod rząd. A atakujący nie ma czasu czekać.
Błąd 3: Brak logowania prób dostępu i analizy anomalii
Większość firm loguje tylko udane logowania. To jak zakładanie monitoringu tylko na drzwi wejściowe, ale ignorowanie okien.
Scenariusz: Atakujący zdobył token sesji (np. przez phishing). Loguje się z innego kraju, o innej porze niż zwykle. System go akceptuje, bo nie sprawdził, czy to nietypowe zachowanie.
Rozwiązanie: Wdróż logowanie wszystkich prób (udanych i nieudanych) oraz alerty dla anomalii: zmiana IP, kraju, urządzenia. To nie musi być AI – prosty skrypt porównujący ostatnie logowanie z wzorcem działa.
Przykład: Platforma SaaS wykryła, że konta użytkowników były przejmowane przez ataki credential stuffing (masowe logowanie na skradzionych hasłach). Dzięki logowaniu i analizie wzorców zablokowali 90% prób, zanim doszło do włamania.
Podsumowanie
Bezpieczeństwo uwierzytelniania to nie firewall ani szyfrowanie. To codzienne decyzje: gdzie trzymasz token, jak blokujesz ataki brute-force, co monitorujesz. Firmy, które traktują to priorytetowo, mają spokój. Reszta – żyje w ciągłym strachu przed wyciekiem.
Jeśli budujesz aplikację webową, zacznij od tych trzech rzeczy. Kosztują mało, a oszczędzają miliony.
A jakie błędy Ty widzisz w strategii uwierzytelniania w swojej firmie?


