| Podatne rozwiązanie | Bezpieczne rozwiązanie | |
|---|---|---|
| Uprawnienia | Ukryte przyciski w interfejsie | Sprawdzenie roli i właściciela rekordu na serwerze przy każdym zapytaniu |
| Identyfikatory | Kolejne numery w adresie, które da się zgadnąć | Identyfikatory niezgadywalne plus kontrola dostępu |
| Panel administratora | Ten sam login co dla klientów, bez drugiego składnika | Osobne role, logowanie dwuskładnikowe, ograniczenie prób |
| Pliki | Dokumenty pod publicznym adresem | Linki czasowe wydawane po sprawdzeniu uprawnień |
Bezpieczeństwo aplikacji webowych: OWASP Top 10:2025, dostęp, aktualizacje i RODO w praktyce
Bezpieczeństwo aplikacji webowych w praktyce: OWASP Top 10:2025, kontrola dostępu, logowanie, zależności, kopie zapasowe i obowiązki z RODO po wycieku.
Większość włamań do aplikacji firmowych nie wymaga genialnego hakera. Wystarczy panel, w którym zmiana numeru w adresie pokazuje cudzą fakturę, biblioteka nieaktualizowana od dwóch lat albo hasło administratora bez drugiego składnika. Bezpieczeństwo aplikacji webowych to w większym stopniu kwestia nawyków przy budowie i utrzymaniu niż egzotycznych zabezpieczeń. Poniżej opisuję, na co zwracam uwagę, opierając się na aktualnej liście OWASP Top 10.
OWASP Top 10:2025: najczęstsze ryzyka
OWASP to fundacja, która co kilka lat publikuje listę najczęstszych kategorii ryzyk w aplikacjach webowych. Aktualna edycja to OWASP Top 10:2025:
- 1.Broken Access Control: użytkownik widzi lub zmienia dane, do których nie powinien mieć dostępu.
- 2.Security Misconfiguration: domyślne hasła, włączony tryb debugowania, zbyt szerokie uprawnienia serwera.
- 3.Software Supply Chain Failures: zagrożenia z bibliotek, pakietów i narzędzi, z których zbudowana jest aplikacja.
- 4.Cryptographic Failures: słabe szyfrowanie albo jego brak przy danych wrażliwych.
- 5.Injection: wstrzyknięcie kodu, np. SQL, przez dane od użytkownika.
- 6.Insecure Design: luki w samym projekcie procesu, a nie w kodzie.
- 7.Authentication Failures: słabe logowanie, brak ochrony przed zgadywaniem haseł, źle obsługiwane sesje.
- 8.Software or Data Integrity Failures: aktualizacje i dane przyjmowane bez weryfikacji ich pochodzenia.
- 9.Security Logging and Alerting Failures: brak logów i alertów, przez co atak wychodzi na jaw po tygodniach.
- 10.Mishandling of Exceptional Conditions: błędy i nietypowe sytuacje obsłużone tak, że otwierają furtkę.
Bezpieczeństwo aplikacji webowych zaczyna się od kontroli dostępu
Pierwsze miejsce na liście nie jest przypadkiem. W aplikacjach firmowych najczęściej spotykany błąd to sprawdzanie uprawnień tylko w interfejsie: przycisk „usuń” jest ukryty dla zwykłego użytkownika, ale samo zapytanie do serwera przechodzi. Zasada jest prosta: każde zapytanie do serwera sprawdza, kto pyta i czy ma prawo do tego konkretnego rekordu, niezależnie od tego, co pokazuje ekran.
Zależności i aktualizacje
Nowoczesna aplikacja składa się w większości z cudzego kodu: frameworka, bibliotek, pakietów. Trzecia pozycja listy OWASP dotyczy właśnie łańcucha dostaw oprogramowania. W praktyce oznacza to automatyczne powiadomienia o lukach w zależnościach, regularne aktualizacje i ostrożność przy dodawaniu nowych pakietów: każdy to kolejny autor, któremu ufasz. Aplikacja, której nikt nie aktualizuje, po roku ma zwykle kilka znanych luk w bibliotekach.
Logi, alerty i kopie zapasowe
- 1
Logi zdarzeń bezpieczeństwa
Logowania, nieudane próby, zmiany uprawnień, eksport danych. Przechowywane poza serwerem aplikacji.
- 2
Alerty na nietypowe sytuacje
Seria nieudanych logowań, masowy eksport danych, błędy serwera powyżej normy trafiają do osoby, która może zareagować.
- 3
Kopie zapasowe z testem odtworzenia
Kopia, której nikt nie próbował odtworzyć, jest tylko nadzieją. Test raz na kwartał pokazuje, czy działa.
RODO: bezpieczeństwo jako obowiązek prawny
Jeśli aplikacja przetwarza dane osobowe klientów lub pracowników, RODO wymaga odpowiednich środków technicznych i organizacyjnych, dobranych do ryzyka (art. 32). W razie naruszenia ochrony danych administrator zgłasza je do Prezesa UODO bez zbędnej zwłoki, w miarę możliwości w ciągu 72 godzin od jego stwierdzenia, chyba że naruszenie nie powoduje ryzyka dla osób (art. 33). Bez logów trudno w ogóle ustalić, co wyciekło i komu, więc logi są tu wymogiem praktycznym, nie tylko technicznym. Najczęstsze błędy małych firm opisuję w tekście o błędach RODO w małych firmach.
Jak sprawdzić aplikację, którą już masz
- Zaloguj się jako zwykły użytkownik i spróbuj otworzyć cudzy rekord, zmieniając identyfikator w adresie.
- Sprawdź, kiedy ostatnio aktualizowano framework i biblioteki.
- Zobacz, czy panel administratora ma logowanie dwuskładnikowe.
- Zapytaj, gdzie są kopie zapasowe i kiedy ostatnio je odtwarzano.
Szybki test podstaw dla strony firmowej opisuję w tekście o audycie bezpieczeństwa w 15 minut. Przy aplikacjach z danymi klientów warto przejść cały proces dokładniej, najlepiej zanim aplikacja trafi do użytkowników, a nie po pierwszym incydencie.
Źródła: OWASP Top 10:2025 i UODO: zgłaszanie naruszeń ochrony danych osobowych.
›Co to jest OWASP Top 10?
Lista najczęstszych kategorii ryzyk w aplikacjach webowych, publikowana przez fundację OWASP. Aktualna edycja to 2025, a na pierwszym miejscu jest błędna kontrola dostępu.
›Jak zabezpieczyć aplikację webową?
Sprawdzać uprawnienia na serwerze przy każdym zapytaniu, aktualizować zależności, włączyć logowanie dwuskładnikowe dla administratorów, prowadzić logi i alerty oraz testować odtwarzanie kopii zapasowych.
›Ile czasu ma firma na zgłoszenie wycieku danych do UODO?
Bez zbędnej zwłoki, w miarę możliwości w ciągu 72 godzin od stwierdzenia naruszenia, chyba że naruszenie nie powoduje ryzyka dla osób, których dane dotyczą.
›Czy możesz sprawdzić bezpieczeństwo mojej aplikacji?
Mogę przejrzeć aplikację pod kątem najczęstszych ryzyk z listy OWASP i zaproponować poprawki, a przy nowych projektach budować je bezpiecznie od początku. Zakres opiszesz w wycenie, a przykłady aplikacji, które buduję, są na stronie aplikacje mobilne.
Chcesz przegadać swój projekt?
Odpowiadam osobiście w ciągu 24h w dni robocze — bez handlowca po drodze.