Zalecenia dotyczące bezpieczeństwa zarządzanych aplikacji internetowych | Centrum e-Zdrowia

Tłumacz PJM

Przejdź do biuletyn informacji publicznej">

Unia Europejska Flaga Unii Europejskiej

kłódka i ikony lewitujące nad dłonią

Zalecenia dotyczące bezpieczeństwa zarządzanych aplikacji internetowych

Zapewnienie cyberbezpieczeństwa aplikacji internetowych jest ważnym aspektem w dzisiejszym cyfrowym świecie. Szczególnie w sektorze ochrony zdrowia, gdzie przetwarzane są dane wrażliwe, a podmioty sektora świadczą krytyczne usługi z zakresu ochrony zdrowia i życia. Dlatego przygotowaliśmy zalecenia, które dotyczą tego tematu.

Czym są aplikacje internetowe?

Aplikacje internetowe (inaczej: WEB APP) to oprogramowanie, które działa na serwerze i jest dostępne dla użytkowników za pośrednictwem przeglądarki internetowej. W przeciwieństwie do tradycyjnych aplikacji desktopowych, nie wymaga instalacji na komputerze użytkownika. Dzięki temu są elastyczne i łatwo dostępne. Przykładami mogą być portale internetowe, systemy do telemedycyny oraz systemy rejestracji online. Ich wszechobecność sprawia, że są nieodłącznym elementem współczesnej działalności, a jednocześnie często nie zdajemy sobie sprawy, że korzystamy z tego typu rozwiązań.

Dlaczego cyberbezpieczeństwo jest kluczowe dla aplikacji webowych?

Wraz z postępem cyfryzacji rośnie także skala cyberzagrożeń. Dotyczy to wszystkich narzędzi, w tym aplikacji webowych. Stają się one celem ataków, ponieważ często przechowują i przetwarzają wrażliwe dane użytkowników. Brak odpowiednich zabezpieczeń może prowadzić do poważnych konsekwencji, w tym utraty danych, naruszenia prywatności, strat finansowych, a nawet do przerwania ciągłości działania jednostki. W kontekście ochrony zdrowia, cyberataki mogą mieć w skrajnych przypadkach tragiczne skutki, prowadząc do zakłóceń w dostępie do dokumentacji medycznej, opóźnień w leczeniu, a nawet bezpośredniego zagrożenia życia pacjentów. Zapewnienie cyberbezpieczeństwa jest zatem konieczne.

Zalecenia w zakresie cyberbezpieczeństwa aplikacji webowych

  1. Architektura i projektowanie bezpieczeństwa

    1. Ograniczenie powierzchni ataku – wyłącz nieużywane usługi, porty i funkcje aplikacji, a w razie możliwości ogranicz dostęp do krytycznych elementów np. paneli administracyjnych lub poczty z poziomu internetu.
    2. Wdrożenie Web Application Firewall (WAF) – skonfiguruj WAF do blokowania typowych ataków (np. SQL Injection, XSS) oraz analizy ruchu w czasie rzeczywistym.
    3. Zabezpieczenie rozwiązań API – stosuj limity zapytań, weryfikuj format oraz wartości żądań i wymagaj autoryzacji dla wszystkich żądań.
    4. Separacja środowisk – wydziel osobne środowiska dla rozwoju, testów i produkcji. Dzięki temu zminimalizujesz ryzyko przypadkowej modyfikacji danych produkcyjnych.
    5. Metody HTTP – ogranicz niepowołane użycie metod takich jak: PUT, DELETE, TRACE.
  2. Uwierzytelnianie i kontrola dostępu

    1. Uwierzytelnianie wieloskładnikowe  – wymagaj 2FA/MFA dla wszystkich kont z dostępem do wrażliwych danych lub paneli administracyjnych. Uwzględniaj też możliwość 2FA/MFA w rozwiązaniach, które planujesz wdrożyć.
    2. Silne polityki haseł – wymuszaj minimalną długość hasła (co najmniej 16 znaków). Weryfikuj hasła poprzez sprawdzanie ich hashy względem słowników zawierających najpopularniejsze hasła. Blokuj możliwość użycia, jeżeli ich hashe znajdują się na tych listach.
    3. Zasada najmniejszego uprzywilejowania (PoLP) – nadawaj użytkownikom tylko te uprawnienia, które są niezbędne do wykonywania ich zadań.
    4. Role-Based Access Control (RBAC) – zdefiniuj role (np. admin, użytkownik, gość) oraz nadawaj uprawnienia na bazie zdefiniowanych grup. Unikaj nadawania pojedynczych uprawnień dla poszczególnych kont.
    5. Weryfikacja dostępu do danych – sprawdzaj poprawność żądań oraz uprawnienia przy każdym żądaniu, nawet po uwierzytelnieniu.
    6. Zarządzanie dostępem na podstawie atrybutów – wykorzystuj atrybuty kontekstowe (lokalizacja, adres IP, czas) do wykrywania oraz blokowania podejrzanych zachowań.
  3. Sesje użytkownika

    1. Zarządzanie sesjami – generuj losowe identyfikatory sesji, unieważniaj je po wylogowaniu i ogranicz ich czas życia w zależności od potrzeby.
    2. Wysyłanie sesji - nie przekazuj identyfikatorów sesji w parametrach URL.
    3. Zabezpieczenie sesji – upewnij się, że ustawiono atrybuty „Secure” oraz „HTTPOnly” dla sesji bazujących na ciasteczkach.
  4. Obsługa błędów oraz monitorowanie

    1. Komunikaty błędów – nie udostępniaj nadmiarowych informacji w przypadku błędu aplikacji/serwera oraz innych komunikatów, zachowując szczegóły w logach.
    2. Agregacja logów – magazynuj logi w scentralizowanym odrębnym miejscu z ograniczonym dostępem.
    3. Powiadamianie o atakach – konfiguruj alerty dla nietypowych zdarzeń. Pozwoli to m.in. wykrywać próby ataków na konta użytkowników lub wykorzystania powszechnych klas podatności m.in. SQL Injection, XSS.  
  5. Konfiguracja wewnętrzna oraz testowanie

    1. Segmentacja sieci – wydziel strefy bezpieczeństwa (np. DMZ, backend) oraz kontroluj i ograniczaj ruch między nimi za pomocą firewalli oraz innych urządzeń sieciowych.
    2. Testowanie bezpieczeństwa - stosuj benchmarki oraz testy bezpieczeństwa dla systemów operacyjnych, baz danych oraz innych aplikacji i usług.
    3. Domyślne ustawienia – upewnij się, że domyślne poświadczenia zostały zastąpione nowymi, unikalnymi wartościami. Funkcje debugowania i podobne ustawienia nie powinny być dostępne dla standardowych użytkowników, chyba że jest to absolutnie niezbędne do prawidłowego działania aplikacji.
  6. Zarządzanie i aktualizacja

    1. Inwentaryzacja oprogramowania – ustal jakie technologie, biblioteki oraz oprogramowania są wykorzystywane.
    2. Aktualizacje bezpieczeństwa – monitoruj informacje o błędach bezpieczeństwa, które dotyczą używanego oprogramowania oraz stosuj mechanizmy minimalizujące ryzyko do czasu aktualizacji podatnych aplikacji.
    3. Używanie zaufanego oprogramowania – weryfikuj oraz używaj pakietów oraz repozytoriów tylko z zaufanych źródeł. Uważaj na ataki próbujące imitować popularne biblioteki oraz pakiety.
    4. Pliki strony – okresowo skanuj pliki oraz weryfikuj zapytania, które są wysyłane w trakcie interakcji z aplikacją.
    5. Pliki systemowe – upewnij się, że ograniczono dostęp do plików zawierających konfigurację aplikacji oraz innych wrażliwych danych.
    6. Dostęp administracyjny – ogranicz dostęp do panelu administracyjnego oraz serwera z poziomu Internetu.
  7. Bezpieczeństwo komunikacji

    1. Protokoły TLS/SSL – stosuj bezpieczne protokoły szyfrujące – TLS 1.2/1.3, unikaj przestarzałych rozwiązań: SSL i TLS 1.0/1.1.
    2. Szyfrowanie komunikacji wewnętrznej – stosuj szyfrowanie w komunikacji wewnętrznej z wykorzystaniem m.in. mTLS.
    3. Protokół HTTP – skonfiguruj wymuszenie użycia szyfrowania poprzez przekierowanie na HTTPS.
  8. Bezpieczeństwo danych w spoczynku

    1. Przechowywanie haseł – używaj obecnie uznane za bezpieczne algorytmy haszujące (np. Argon2, Bcrypt).
    2. Dane medyczne – upewnij się, że informacje takie jak dane medyczne są przechowywane w bezpieczny, zaszyfrowany sposób.
  9. Podstawowe formy ochrony przed atakami

    1. SQL Injection – zastępuj konkatenację znaków, wbudowanymi i przetestowanymi rozwiązaniami (np. za pomocą Prepared Statements).  
    2. XSS – weryfikuj dane, które może przesłać lub zmodyfikować użytkownik. Enkoduj dane wyjściowe (HTML Entity Encoding).  
    3. CSRF – skonfiguruj nagłówki (np. X-Requested-With) i tokeny synchronizatorów.
    4. Brute-Force – ogranicz możliwość wielu nieudanych prób logowania poprzez rozwiązania typu CAPTCHA, blokadę adresu IP oraz kont, do których atakujący próbuje się logować.  
    5. DoS/DDoS – rozważ wdrożenie rozwiązania antyDDoS, redundancję kluczowych urządzeń oraz wdrożenie zapasowego łącza.
    6. Przejęcie sesji – wprowadź mechanizmy wykrywające przejęcie sesji (np. zmianę adresu IP lub nagłówka user-agent).
    7. Sanityzacja plików – sprawdzaj typ MIME, rozmiar oraz skanuj antywirusowo wszystkie przesyłane pliki.
    8. Walidacja formatów danych – stosuj wyrażenie regularne (tzw. regex) dla adresów email, numerów telefonów i identyfikatorów.
    9. Ograniczenie rozmiaru żądań – konfiguruj maksymalny rozmiar przesyłanych danych (np. max 10 MB dla formularzy lub plików również po dekompresji).
    10. Nagłówki bezpieczeństwa HTTP – włącz oraz skonfiguruj nagłówki takie jak: HSTS, X-Content-Type-Options, Content-Security-Policy, X-Frame-Options, X-XSS-Protection, Referrer Policy.