Lepiej późno niż wcale – zabezpieczanie aplikacji webowej w fazie produkcji
Zabezpieczanie aplikacji webowej, która jest już w fazie produkcji, może wydawać się przytłaczające dla organizacji. Jednak wciąż możliwe jest wprowadzenie środków bezpieczeństwa tuż przed jej uruchomieniem, w krytycznym etapie procesu rozwoju oprogramowania. Idealnie, organizacje powinny zabezpieczać aplikację od samego początku i przez cały cyklu procesu bezpiecznego wytwarzania oprogramowania (Secure Software Development Life Cycle – SSDLC), ale mogą wystąpić nieprzewidziane okoliczności, takie jak ograniczenia budżetowe, które prowadzą do decyzji o zabezpieczeniu aplikacji na ostatnią chwilę przed jej wydaniem. Na szczęście istnieje kilka praktycznych kroków, które można podjąć, aby zabezpieczyć aplikację webową.
Przeczytaj dalej, aby poznać porady dotyczące rozwiązań, które organizacje mogą wdrożyć, aby zwiększyć bezpieczeństwo swojej aplikacji webowej i chronić cenne dane oraz zasoby przed cyberprzestępcami.
Wykonuj regularne kopie zapasowe
Regularne tworzenie kopii zapasowych kodu, danych i innych cennych zasobów jest kluczowe dla zabezpieczenia organizacji przed potencjalną utratą danych oraz wzmocnienia bezpieczeństwa aplikacji webowej. Tworząc kopie tych danych, możesz szybko odzyskać systemy w przypadku naruszenia bezpieczeństwa, awarii sprzętu, błędów oprogramowania, pomyłek ludzkich lub złośliwych ataków cyberprzestępców. Posiadanie kopii zapasowej stanowi „siatkę bezpieczeństwa”, pozwalającą na przywrócenie systemów do stanu sprzed utraty danych lub incydentu, zmniejszając przestoje i minimalizując straty finansowe. Ważne jest również odpowiednie zabezpieczenie kopii zapasowych, np. poprzez ich szyfrowanie, szczególnie gdy będą one przenoszone pomiędzy lokalizacjami. Istnieje wiele rozwiązań do tworzenia kopii zapasowych, jednak wybór zależy od budżetu organizacji oraz jej potrzeb. Kopie zapasowe są niezbędne dla ciągłości biznesowej, odzyskiwania po awarii oraz planowania reakcji na incydenty związane z zagrożeniami cyberprzestępczości.

Zaimplementuj HTTPS
Organizacja powinna wdrożyć HTTPS (HyperText Transfer Protocol Secure) w celu zabezpieczenia aplikacji webowej, ponieważ szyfruje prawie wszystkie dane przesyłane pomiędzy przeglądarką użytkownika a serwerem. Na przykład, implementacja HTTPS w aplikacji webowej szyfruje dane komunikacyjne, uniemożliwiając ich odczyt, co jest bardzo ważne w ochronie wrażliwych informacji, takich jak hasła i numery kart kredytowych. HTTPS sprawia również, że znacznie trudniej jest odszyfrować dane, chociaż nie gwarantuje to, że nie będzie to możliwe. Dodatkowo HTTPS pomaga zapobiegać atakom, w których napastnicy podsłuchują lub przechwytują dane, jak ma to miejsce w ataku typu man-in-the-middle. Działa to za pomocą protokołu szyfrowania o nazwie Transport Layer Security (TLS), wcześniej znanego jako Secure Sockets Layer (SSL). HTTP, z drugiej strony, nie zapewnia takiego samego poziomu bezpieczeństwa co HTTPS, ponieważ nie szyfruje danych, które mogą być przechwycone i wyświetlone w postaci otwartego tekstu.
Poza szyfrowaniem, HTTPS zapewnia wiele korzyści związanych z bezpieczeństwem.
- Uwierzytelnianie: HTTPS zapewnia uwierzytelnianie, które pozwala zweryfikować tożsamość witryny, gwarantując, że użytkownicy komunikują się z zamierzoną witryną. W rezultacie strony phishingowe i inne oszustwa internetowe mają mniejsze szanse na kradzież danych użytkowników.
- Integralność danych: HTTPS pomaga zapewnić, że dane przesyłane pomiędzy użytkownikiem a serwerem nie zostały zmodyfikowane ani naruszone podczas transmisji.
- Optymalizacja pod kątem wyszukiwarek (SEO): Implementacja HTTPS może zwiększyć widoczność i pozycję aplikacji webowej w wynikach wyszukiwania. Na przykład Google wskazało, że HTTPS jest sygnałem rankingowym w ich wynikach wyszukiwania.
- Zaufanie użytkowników: Użytkownicy chętniej ufają i korzystają ze stron internetowych, które mają włączony HTTPS, ponieważ jest to powszechnie uznawane za oznakę bezpiecznej witryny.
Implementacja HTTPS i certyfikatów cyfrowych dla Twojej aplikacji webowej
Aby zabezpieczyć aplikację webową przy użyciu HTTPS i certyfikatu cyfrowego, wykonaj następujące kroki:
- Uzyskaj certyfikat cyfrowy i zainstaluj go na serwerze: Uzyskaj certyfikat SSL od zaufanej instytucji certyfikującej (CA), takiej jak Let’s Encrypt, DigiCert czy GlobalSign, i zainstaluj go na swoim serwerze.
Istnieją trzy główne rodzaje certyfikatów SSL:- Domain Validation (DV): Najprostsze i najtańsze certyfikaty SSL, które oferują standardowe szyfrowanie i nadają się do małych osobistych stron internetowych lub blogów.
- Organization Validation (OV): Certyfikaty OV oferują wyższy poziom weryfikacji i dodają warstwę zaufania do stron internetowych skierowanych do publiczności, co czyni je odpowiednimi dla małych i średnich firm.
- Extended Validation (EV): Najbezpieczniejsze i najdroższe certyfikaty SSL, wymagające rozbudowanego procesu weryfikacji i zapewniające najwyższy poziom zaufania dla dużych przedsiębiorstw, instytucji finansowych i stron e-commerce.
- Skonfiguruj HTTPS na serwerze: Pozwoli to serwerowi używać zainstalowanego certyfikatu cyfrowego do przekierowywania ruchu HTTP na HTTPS.
- Zaktualizuj linki na swojej stronie: Ważne jest, aby zmienić wszelkie twardo zakodowane linki HTTP na HTTPS, aby zapobiec wystąpieniu uszkodzonych linków lub ostrzeżeń o bezpieczeństwie.
- Testuj i weryfikuj: Po skonfigurowaniu HTTPS przetestuj swoją stronę i upewnij się, że działa poprawnie, korzystając z narzędzi online, takich jak SSL Labs.
W zależności od certyfikatu i CA, HTTPS może kosztować od darmowego do setek dolarów rocznie. Dodatkowo, konfiguracja serwera webowego do używania HTTPS może być skomplikowana i wymagać profesjonalnej pomocy, co może zwiększyć koszty. Niemniej jednak implementacja HTTPS jest stosunkowo tania w porównaniu do korzyści związanych z bezpieczeństwem, jakie zapewnia. Aby poznać inne sposoby zabezpieczania HTTP, przeczytaj nasz artykuł na temat włączania nagłówków bezpieczeństwa HTTPS.
Egzekwuj silne polityki haseł i uwierzytelniania dwuskładnikowego (2FA)
Aby zwiększyć bezpieczeństwo aplikacji webowej, zaleca się wdrożenie rygorystycznych wymagań dotyczących haseł, zgodnych z wytycznymi National Institute of Standards and Technology (NIST) SP 800-63B. W przypadkach, gdy aplikacja przechowuje wrażliwe lub krytyczne dane, zastosowanie uwierzytelniania dwuskładnikowego (2FA) może dodatkowo ograniczyć ryzyko nieautoryzowanego dostępu. Używanie menedżera haseł w połączeniu z 2FA również stanowi dobre rozwiązanie.
Zgodnie z wytycznymi NIST SP 800-63B, silne hasło powinno spełniać następujące kryteria:
- Powinno mieć co najmniej 8 znaków i maksymalnie 64 znaki.
- Musi być złożone, zawierać duże i małe litery, cyfry oraz znaki specjalne.
- Nie może zawierać popularnych, łatwych do odgadnięcia haseł, powtarzających się znaków ani słów słownikowych.
- Powinno być unikalne – nie należy ponownie wykorzystywać lub recyklingować haseł z innych kont.

Stosuj silne algorytmy haszujące
Silne haszowanie haseł stanowi kluczowy element zabezpieczeń aplikacji webowej. Jest to proces kryptograficzny, który przekształca pierwotne hasło (tekst jawny) w unikalny, stałej długości ciąg znaków zwany skrótem (hash). Wygenerowany skrót nie powinien być możliwy do odwrócenia ani odszyfrowania, a każda modyfikacja wejściowego hasła skutkuje inną wartością skrótu. Silne haszowanie sprawia, że oryginalne hasło jest niemożliwe do odzyskania przez cyberprzestępców.
Haszowanie pozwala na bezpieczne przechowywanie haseł w bazie danych lub ich transmisję przez sieć. Przykładowo, gdy użytkownik loguje się do aplikacji, jego hasło jest haszowane i porównywane z przechowywanym skrótem. Dzięki temu system może zweryfikować poprawność hasła bez konieczności przechowywania go w formie jawnej, co znacząco redukuje ryzyko naruszenia danych.
Proces haszowania wykorzystuje algorytm (funkcję skrótu), który przekształca dane wejściowe w wartość skrótu. Aby funkcja była bezpieczna, powinna być odporna na ataki pre-image i second pre-image oraz stosować wartości sol (salt), które dodatkowo utrudniają złamanie skrótu.
Rekomendowane algorytmy haszowania haseł w aplikacjach webowych
Aplikacje webowe mogą chronić hasła użytkowników oraz zapobiegać nieautoryzowanemu dostępowi, stosując poniższe algorytmy haszujące:
- Bcrypt – popularny algorytm oparty na szyfrze Blowfish, zaprojektowany z myślą o wysokim poziomie bezpieczeństwa. Jego działanie jest celowo wolne i zasobożerne, co utrudnia cyberprzestępcom przeprowadzanie ataków brute-force. Dodatkowo, każdorazowo stosuje sol do haszowania haseł, zwiększając poziom ochrony.
- Scrypt – nowocześniejszy algorytm, który zwiększa wymagania pamięciowe podczas generowania skrótu, co utrudnia ataki przy użyciu akceleracji sprzętowej. Uznawany za bezpieczniejszy od Bcrypt.
- Argon2 – zwycięzca konkursu Password Hashing Competition w 2015 roku, uznawany za najbezpieczniejszy spośród wymienionych algorytmów. Pozwala na dostosowanie parametrów czasu, pamięci oraz liczby wątków do generowania skrótów. Istnieją trzy jego warianty:
- Argon2i – odporny na ataki poboczne (side-channel attacks),
- Argon2d – odporny na ataki z użyciem GPU,
- Argon2id – hybryda obu powyższych, zapewniająca maksymalną ochronę przed atakami brute-force.
Z kolei stosowanie słabych algorytmów, takich jak MD5 czy SHA-1, nie jest zalecane, ponieważ mogą narazić aplikację webową na ataki i zagrozić bezpieczeństwu użytkowników. NIST oficjalnie wycofał algorytm SHA-1 15 grudnia 2022 roku, uznając go za niebezpieczny. Choć MD5 wciąż bywa używany do weryfikacji plików, tablic mieszających czy identyfikacji, nie nadaje się do przechowywania haseł. Podobnie PBKDF2 (Password-Based Key Derivation Function 2), choć długo stosowany, obecnie jest uznawany za przestarzały ze względu na niską wydajność i podatność na ataki prekomputacyjne, takie jak tablice tęczowe (rainbow tables).
Aktualizuj aplikację
Utrzymywanie aplikacji w najnowszej wersji oraz regularna aktualizacja bibliotek, frameworków, komponentów i innych zależności pozwala eliminować znane podatności. Może to być realizowane wewnętrznie lub poprzez zewnętrznych dostawców specjalizujących się w dynamicznym testowaniu bezpieczeństwa aplikacji webowych (DAST) oraz testach penetracyjnych. Aktualizacja aplikacji zmniejsza ryzyko ataków wynikających z wykorzystywania znanych luk bezpieczeństwa i zapewnia dostęp do najnowszych poprawek bezpieczeństwa. Należy jednak pamiętać, że samo aktualizowanie zależności nie gwarantuje pełnej ochrony, ponieważ wciąż mogą pojawiać się nowe podatności, takie jak tzw. 0-day vulnerabilities. Ponadto przed wdrożeniem aktualizacji warto upewnić się, że nie wpłynie ona negatywnie na kompatybilność aplikacji ani nie wprowadzi nowych podatności.
Umieszczaj aplikację za WAF
Zapora aplikacyjna WAF (Web Application Firewall) to jedno z najskuteczniejszych rozwiązań w zakresie ochrony aplikacji webowej. WAF działa poprzez filtrowanie przychodzących żądań i monitorowanie ruchu HTTP pomiędzy aplikacją webową a Internetem. Jest skuteczny w blokowaniu większości złośliwego ruchu.
Typowe ataki, przed którymi chroni WAF, to:
- Cross-Site Scripting (XSS) – wstrzykiwanie złośliwego kodu JavaScript do aplikacji,
- SQL Injection (SQLi) – wstrzykiwanie nieautoryzowanych zapytań SQL w celu manipulacji bazą danych,
- Cross-Site Request Forgery (CSRF) – zmuszanie użytkownika do wykonania niechcianych operacji,
- Brute Force – ataki siłowe mające na celu złamanie haseł użytkowników.
Wdrożenie WAF może być realizowane wewnętrznie poprzez instalację i konfigurację zapory na własnej infrastrukturze, co zapewnia większą kontrolę nad jej ustawieniami i zarządzaniem. Dzięki umieszczeniu aplikacji za WAF organizacje mogą znacząco zredukować ryzyko kompromitacji swoich systemów.

Przeprowadzaj dynamiczne skany (DAST)
Podczas fazy produkcyjnej aplikacji internetowej organizacja może przeprowadzić skanowanie DAST (Dynamic Application Security Testing) w czasie rzeczywistym, aby szybko wykryć luki w zabezpieczeniach i zagrożenia, zanim zostaną one wykorzystane przez cyberprzestępców. DAST to automatyczny test bezpieczeństwa aplikacji internetowej, który polega na wysyłaniu złośliwych żądań do aplikacji i analizowaniu odpowiedzi w celu wykrycia potencjalnych podatności. Dzięki skanowaniu DAST organizacja może zidentyfikować i usunąć luki w zabezpieczeniach aplikacji oraz upewnić się, że spełnia ona wymagania zgodności z przepisami dotyczącymi bezpieczeństwa.
Skanowanie DAST pomaga w zabezpieczeniu aplikacji internetowej poprzez wykrywanie typowych zagrożeń, takich jak:
- SQL injection (SQLi)
- Cross-site scripting (XSS)
- Cross-site request forgery (CSRF)
- Słabe hasła
Zalety i wady skanowania DAST
Zalety | Wady |
– Mniejsza liczba fałszywych alarmów – Identyfikacja błędów konfiguracyjnych – Możliwość automatyzacji i regularnego wykrywania podatności – Niezależność od języka programowania – Szeroki zakres wykrywanych podatności | – Ograniczenia – skanowanie obejmuje tylko warstwę aplikacji internetowej – Generuje dużą ilość danych, których analiza może być czasochłonna i trudna – Brak wglądu w kod źródłowy – Słaba skalowalność – Skanowanie jest wolne, nawet z automatyzacją – Może wymagać testów manualnych w sytuacjach, gdy automatyzacja jest niewystarczająca |
Przeprowadzaj skany kodu źródłowego (SAST)
Przeprowadzenie skanowania SAST (Static Application Security Testing), czyli tzw. analizy statycznej, kodu źródłowego aplikacji internetowej pozwala na wykrycie podatności, które mogą zostać wykorzystane przez cyberprzestępców. Jest to szczególnie istotne podczas fazy rozwoju aplikacji, jeszcze przed jej wdrożeniem, ponieważ usunięcie podatności po udostępnieniu aplikacji użytkownikom wymaga znacznie większych zasobów. Co więcej, luki bezpieczeństwa w aplikacji produkcyjnej mogą zostać wykorzystane przez atakujących. Skanowanie SAST zazwyczaj generuje raport zawierający wykryte podatności oraz sugerowane sposoby ich usunięcia. Po wdrożeniu poprawek skan powinien zostać powtórzony, aby upewnić się, że wszystkie zagrożenia zostały wyeliminowane i aplikacja jest zabezpieczona przed atakami.
Zalety i wady skanowania SAST:
Zalety | Wady |
– Skanowanie kodu źródłowego pozwala na wczesne wykrycie ryzyka i podatności w cyklu wytwarzania oprogramowania – Zapewnia kompleksowy obraz bezpieczeństwa aplikacji, co ułatwia podejmowanie decyzji – Oszczędność czasu i kosztów – wczesne wykrycie problemów redukuje wydatki na późniejsze poprawki | – Może generować dużą liczbę fałszywych alarmów – Trudna interpretacja wyników – wymaga specjalisty ds. bezpieczeństwa – Raport jest statyczny i szybko się dezaktualizuje – Nie wykrywa podatności w środowisku dynamicznym – Wymaga dostępu do kodu źródłowego – Silna zależność od konkretnego języka programowania |
Przeprowadź test penetracyjny
Przeprowadzenie testu penetracyjnego, znanego również jako „pentest”, na aplikacji webowej w fazie produkcyjnej to kluczowy krok w zapewnieniu bezpieczeństwa informacji i danych organizacji. Test penetracyjny to symulowany atak na aplikację, który pozwala zidentyfikować istniejące luki i podatności. Jest to istotne, ponieważ umożliwia wykrycie i naprawienie potencjalnych słabości aplikacji webowej, zanim zostaną one wykorzystane przez cyberprzestępców. Pentesty powinny być zlecane specjalistom ds. bezpieczeństwa, a ich koszt zależy od wielu czynników, takich jak rodzaj testu, zakres działań, doświadczenie i renoma eksperta, długość trwania testu i inne aspekty.

Zapewnij szkolenie z zakresu bezpieczeństwa
.Zapewnienie zespołowi szkolenia z zakresu bezpieczeństwa to kolejny istotny krok w procesie zabezpieczania aplikacji webowej w fazie produkcyjnej. Szkolenia pomagają zespołowi – w szczególności programistom i administratorom – zrozumieć znaczenie bezpiecznych praktyk kodowania, takich jak walidacja danych wejściowych, uwierzytelnianie i autoryzacja oraz bezpieczne zarządzanie sesjami. Dodatkowo, szkolenia mogą podnieść świadomość zagrożeń i podatności, na jakie narażona jest aplikacja, oraz nauczyć, jak prawidłowo na nie reagować i je neutralizować. Dzięki szkoleniom zespół może skuteczniej wdrażać i utrzymywać bezpieczne aplikacje webowe.
Podsumowanie
Zabezpieczenie aplikacji webowej w fazie produkcyjnej może wydawać się wyzwaniem, jednak odpowiednie kroki i zasoby umożliwiają skuteczną ochronę przed cyberprzestępcami. Kluczowe działania obejmują:
- regularne wykonywanie kopii zapasowych,
- egzekwowanie silnych polityk haseł oraz wdrożenie uwierzytelniania dwuskładnikowego (2FA),
- implementację protokołu HTTPS,
- umieszczenie aplikacji za zaporą webową (WAF),
- zapewnienie szkoleń z zakresu bezpieczeństwa.
Dodatkowo, przeprowadzenie testu penetracyjnego oraz skanów bezpieczeństwa aplikacji (DAST i SAST) pozwala na wykrycie i usunięcie istniejących podatności. Choć wiele z tych rozwiązań można wdrożyć wewnętrznie, organizacje często powinny skorzystać z pomocy doświadczonych ekspertów ds. bezpieczeństwa, aby upewnić się, że ich aplikacje są dobrze zabezpieczone i zgodne z najnowszymi standardami. Jest to kluczowe dla ochrony wrażliwych danych, uniknięcia strat finansowych oraz zapewnienia ciągłości działania.
Zigrin oferuje nowoczesne rozwiązania i usługi, które pomagają chronić cenne zasoby i dane. Jeśli Twoja organizacja potrzebuje dodatkowych zasobów lub wsparcia ekspertów ds. bezpieczeństwa w zakresie zabezpieczania aplikacji webowej, Zigrin jest do Twojej dyspozycji.
Źródła:
- https://www.cloudflare.com/learning/ssl/what-is-https/
- https://www.cloudflare.com/learning/ddos/glossary/web-application-firewall-waf/
- https://www.rapid7.com/fundamentals/dast/
- https://www.nist.gov/news-events/news/2022/12/nist-retires-sha-1-cryptographic-algorithm
- https://zigrin.com/cybersecurity-for-startups-backup-user-data-and-source-code/
- https://zigrin.com/services/web-application-security-testing/
- https://zigrin.com/cybersecurity-for-startups-use-a-password-manager-and-two-factor-authentication/
- https://zigrin.com/cybersecurity-for-startups-enable-http-security-headers/
- https://www.comparitech.com/blog/information-security/what-is-preimage-attack/
- https://developers.google.com/search/blog/2014/08/https-as-ranking-signal
- https://www.ssllabs.com/ssltest/
- https://sectigo.com/resource-library/different-types-of-ssl-certificates-explained
- https://letsencrypt.org/
- https://www.digicert.com/
- https://www.globalsign.com/en
- https://zigrin.com/secure-software-frameworks-for-mature-organizations/
- https://www.boldare.com/blog/how-to-improve-user-password-security-with-argon2/
- https://www.microfocus.com/en-us/what-is/sast
- https://www.mend.io/resources/blog/sast-static-application-security-testing/
- https://snyk.io/learn/application-security/dast-dynamic-application-security-testing/
- https://www.boldare.com/blog/how-to-improve-user-password-security-with-argon2/

Porozmawiajmy o przeprowadzaniu badań bezpieczeństwa aplikacji internetowej
Umów się na rozmowę z ekspertem ds. cyberbezpieczeństwa
Czy artykuł jest pomocny? Podziel się nim ze swoimi znajomymi.