Bezpieczeństwo w nagłówkach HTTP

Bezpieczeństwo aplikacji web i jej klientów może być obecnie realizowane na wielu płaszczyznach. Od szyfrowania komunikacji, przez walidację danych, aż po weryfikację zachowania klientów na wysokim poziomie. Jednak na samym początku warto zwrócić uwagę na możliwości jakie dają nagłówki HTTP.

Obecnie przeglądarki internetowe wpierają wiele dodatkowych funkcjonalności dzięki którym przy niskim nakładzie prac można podnieść poziom bezpieczeństwa. Dzięki wysyłaniu przez serwer dodatkowych informacji w nagłówkach można w odpowiedni sposób sterować polityką bezpieczeństwa po stronie przeglądarki.

HTTP Strict Transport Security (HSTS)
To nagłówek wykorzystywany jest w aplikacjach, gdzie komunikacja odbywa się za pomocą protokołu HTTPS. Informuje ona przeglądarkę, że żadna komunikacją ze stroną nie powinna być realizowana przez kanał niezaszyfrowany, czyli HTTP.  Obowiązkowym parametrem jest max-age, który definiuje jak długo klient powinien pamiętać, że komunikacja ma się odbywać wyłącznie przez HTTPS. Dodatkowo można użyć opcjonalnego parametru includeSubDomains. Jego zastosowanie spowoduje, że reguła ta będzie dotyczyła również wszystkich subdomen.

X-XSS-Protection
Wiele przeglądarek internetowych posiada wbudowany filtr, którego zadaniem jest ochrona ich użytkowników przed atakami XSS. Korzystając z nagłówka X-XSS-Protection możliwe jest włączenie (0) lub wyłączenie jego funkcjonalności. Domyślnie filtr dokona sanityzacji, co jednak nie zawsze poprawnie może się udać. Dlatego zalecane jest stosowanie dodatkowego parametru w postaci mode=block który spowoduje wstrzymanie renderowania strony. W przypadku wdrażania systemu mającego na celu wykrywać próby ataków XSS lub ewentualne błędy w filtrach można zastosować parametr report=http://example.com/raporty który spowoduje przesłanie na wskazany adres szczegółowego raportu na temat zablokowania zapytania przez przeglądarkę.

X-Content-Type-Options
Aby ustrawnić wyświetlanie stron WWW, przeglądarki internetowe potrafią dodatkowo przeglądać treść pobieranych danych w celu zidentyfikowania ich typu MIME. Stwarza to pewne zagrożenie, np. gdy w pliku z rozszerzeniem PNG zostanie zamieszczony kod JavaScript. W celu uniknięcia tego typu sytuacji korzystając z nagłówka X-Content-Type-Options i jego parametru nosniff można wyłączyć tą funkcjonalność.

X-Frame-Options
W wielu przypadkach intruz może próbować wykorzystać atak Clickjacking wobec użytkowników naszego serwisu. Jeśli sam serwis nigdzie nie wykorzystuje ramek HTML <IFRAME>, wtedy warto poinformować o tym przeglądarkę za pomocą nagłówka X-Frame-Options. Przyjmuje on takie parametry jak deny (blokada ramek), sameorigin (dopuszczenie w tej samej domenie) lub allow-from: mojadomena.com (dopuszczenie ramek ze wskazanej domeny).

HTTP Public Key Pinning
W wielu przypadkach może dojść do kompromitacji CA lub wygenerowaniu fałszywego certyfikatu SSL. W celu zabezpieczenia użytkowników przed tego typu sytuacją warto wygenerować fingerprint klucza, który zakodowany w Base64 będzie zwracany użytkownikom w nagłówku Public-Key-Pins. Wraz z czasem przez jaki przeglądarka powinna pamiętać wskazany fingerprint (max-age) oraz czy dotyczy on również subdomen (includeSubDomains) możliwe jest również zamieszczenie w parametrze adresu pod jakim będą raportowane nadużycia (report-uri="http://raportataku.com/raporty" ).

Content-Security-Policy
Nagłówek Content Security Policy (CSP) jest jednym z najbardziej rozbudowanych jeśli chodzi o jego możliwości i tym samym może wymagać niestety ciągłych zmian wraz z rozwojem serwisu. W celu zabezpieczenia serwisu oraz jego klientów pozwala on na precyzyjne zdefiniowane z jakich dozwolonych miejsc mogą być pobierane dodatkowe zasoby. Wszelkie dodatkowe pliki CSS, obrazki, formularze bądź czcionki mogą zostać ograniczone do wybranych domen, co w pełni zabezpieczy użytkowników przed atakami XSS jak i innymi z serii cross injection.

Warto zaznaczyć, że w sieci istnieje kilka ciekawych narzędzi, które pozwalają na weryfikację zaimplementowanych rozwiązań jak i dostarczają szczegółowych wskazówek dotyczące wdrożenia poprawnych wartości dla nagłówków, niektóre z nich to:




Brak komentarzy :

Prześlij komentarz