Co to są nagłówki bezpieczeństwa HTTP i jak ich używać?

Co to są nagłówki bezpieczeństwa HTTP i jak ich używać?
Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską.

Kiedy chcesz odwiedzić stronę internetową, przeglądarka internetowa, której używasz, otrzymuje pewne dane z tej strony. W rezultacie dochodzi do dialogu między Twoim urządzeniem a witryną. Dzieje się tak z protokołem o nazwie HTTP. Poprzez interwencję w ten dialog możliwe jest podjęcie dodatkowych środków bezpieczeństwa.





WYKORZYSTAJ WIDEO DNIA

Jeśli prowadzisz stronę internetową lub planujesz karierę jako programista stron internetowych, nagłówki bezpieczeństwa HTTP są dla Ciebie nieocenione, ponieważ odgrywają aktywną rolę w bezpieczeństwie zarówno użytkownika, jak i strony internetowej.





Co to jest HTTP Strict-Transport-Security (HSTS)?

HTTP Strict Transport Security (HSTS) zmusza użytkowników do korzystania z HTTPS przy każdym żądaniu wysyłanym w przeglądarce. Jest to solidny sposób na zwalczanie cyberataków, takich jak obniżenie wersji, oraz zapewnienie bezpieczeństwa całego ruchu.





Aktywacja HSTS jest dość łatwa. Rozważ dialog między klientem a serwerem. Kiedy próbujesz uzyskać dostęp do witryny za pośrednictwem przeglądarki, jesteś klientem. Witryna, którą chcesz otworzyć, zależy od serwera. Twoim celem jest poinformowanie serwera „Chcę otworzyć tę witrynę”. To jest operacja żądania. Serwer natomiast przekieruje Cię na stronę, jeśli spełnisz żądane warunki.

Pamiętaj o tym w odniesieniu do tej przykładowej flagi nagłówka HTTP:



Strict-Transport-Security: max-age=16070200; 

Gdy dodasz tę flagę do informacji nagłówka odpowiedzi HTTP, wszystkie żądania generowane przez użytkowników staną się HTTPS. Cokolwiek użytkownik tu napisze, przeglądarka automatycznie oceni protokół jako HTTPS i nawiąże bezpieczne połączenie.

Jak korzystać z HSTS

Zamiast dodawać wszystkie te informacje nagłówka HTTP w warstwie kodu, możesz to zrobić w Apache, IIS, Nginx, Tomcat i innych aplikacjach serwera WWW.





Aby włączyć HSTS w Apache:

LoadModule headers_module modules/mod_headers.so 
<VirtualHost *:443>
Header always set Strict-Transport-Security "max-age=2592000; includeSubDomains"
</VirtualHost>

Aby włączyć HSTS w Nginx:





add_header Strict-Transport-Security max-age=2592000; includeSubdomains 

Aby włączyć HSTS z IIS web.config:

<system.webServer> 
<httpProtocol>
<customHeaders>
<add name="Strict-Transport-Security" value="max-age=63072000"/>
</customHeaders>
</httpProtocol>
</system.webServer>

Dla użytkowników Cloudflare

Cloudflare zapewnia bezpłatną usługę HTTPS dla wszystkich dzięki usłudze Keyless SSL; przed złożeniem wniosku o preload HSTS powinieneś wiedzieć, że Twój certyfikat nie należy do Ciebie. Wiele witryn korzysta z certyfikatów SSL ponieważ są prostym sposobem na zapewnienie bezpieczeństwa danych.

Jednak teraz Cloudflare obsługuje funkcję HSTS . Możesz aktywować wszystkie funkcje HSTS, w tym wstępne ładowanie, za pośrednictwem interfejsu internetowego Cloudflare bez konieczności zmagania się z konfiguracją na serwerze internetowym.

Co to są opcje X-Frame?

  Zwiększenie bezpieczeństwa serwisu za pomocą nagłówków HTTP

X-Frame-Options to nagłówek bezpieczeństwa obsługiwany przez wszystkie nowoczesne przeglądarki. X-Frame-Options ma na celu ochronę przed kradzieżą kliknięć, taką jak Clickjacking. Jak sama nazwa wskazuje, chodzi o działanie wrażliwej ramki inline, znanej również jako ramka iframe. Są to elementy w witrynie, które osadzają inną stronę HTML w witrynie „nadrzędnej”, dzięki czemu można korzystać z treści z innych źródeł w witrynie. Ale atakujący używają ramek iframe pod własną kontrolą, aby zmusić użytkowników do wykonywania działań, których nie chcą.

Z tego powodu musisz uniemożliwić atakującym znalezienie ramek iframe w witrynie.

Gdzie i jak używać opcji X-Frame?

To, co robi X-Frame-Options, niektórzy programiści próbują zrobić z językami takimi jak JavaScript. To nie jest całkowicie błędne. Jednak nadal istnieje ryzyko, ponieważ kody napisane w wielu aspektach to za mało. Rozsądnie byłoby więc pozostawić to zadanie używanej przeglądarce internetowej.

Jednakże, jako programista, istnieją trzy parametry, które należy wiedzieć o X-Frame-Options:

  • Zaprzeczyć : Całkowicie zapobiegaj wywoływaniu strony w dowolnym elemencie iframe.
  • SAME POCHODZENIE : zapobiegaj wywoływaniu przez domenę inną niż Twoja w obrębie elementu iframe.
  • ZEZWÓL OD uri : Akceptuj wywołania iframe o identyfikatorze URI podanym jako parametr. Blokuj innych.

Tutaj SAME POCHODZENIE funkcja wyróżnia się bardziej. Ponieważ chociaż możesz wywoływać aplikacje w swoich różnych subdomenach za pomocą elementów iframe wewnątrz siebie, możesz uniemożliwić ich wywoływanie w domenie pod kontrolą atakującego.

Oto przykłady wykorzystania SAMEORIGIN i X-Frame-Options z NGINX, Apache i IIS:

Używanie X-Frame-Options SAMEORIGIN dla Nginx:

add_header X-Frame-Options SAMEORIGIN; 

Używanie X-Frame-Options SAMEORIGIN dla Apache:

Header always append X-Frame-Options SAMEORIGIN 

Używanie X-Frame-Options SAMEORIGIN dla IIS:

<httpProtocol> 
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>

Samo dodanie samego nagłówka SAMEORIGIN zapewni większe bezpieczeństwo odwiedzającym.

Co to jest ochrona X-XSS?

Korzystanie z informacji nagłówka X-XSS-Protection może chronić użytkowników przed atakami XSS. Po pierwsze, musisz wyeliminować Luki XSS po stronie aplikacji. Po zapewnieniu bezpieczeństwa opartego na kodzie, wymagane są dalsze środki, tj. nagłówki X-XSS-Protection, przeciwko lukom XSS w przeglądarkach.

Jak korzystać z ochrony X-XSS

Nowoczesne przeglądarki mogą wykrywać potencjalne ładunki XSS poprzez filtrowanie treści generowanych przez aplikacje. Funkcję tę można aktywować za pomocą informacji nagłówka X-XSS-Protection.

Aby włączyć nagłówek X-XSS-Protection w Nginx:

add_header X-Frame-X-XSS-Protection 1; 

Aby włączyć nagłówek X-XSS-Protection w Apache:

Header always append X-XSS-Protection 1 

Aby włączyć nagłówek X-XSS-Protection w usługach IIS:

<httpProtocol> 
<customHeaders>
<add name="X-XSS-Protection" value="1" />
</customHeaders>
</httpProtocol>

Aby zapobiec domyślnemu uruchomieniu bloku kodu z atakiem XSS, możesz użyć czegoś takiego:

jak przesyłać strumieniowo gry komputerowe do telewizora?
X-XSS-Protection: 1; mode=block 

Tę niewielką zmianę należy wprowadzić, jeśli istnieje potencjalnie niebezpieczna sytuacja i chcesz uniemożliwić renderowanie całej zawartości.

Co to są X-Content-Type-Options?

Przeglądarki przeprowadzają analizę o nazwie MIME Type Sniffing na treści prezentowanej im przez aplikację internetową. Na przykład w przypadku żądania dostępu do pliku PDF lub PNG przeglądarki, które przeprowadzają analizę odpowiedzi HTTP, określają typ pliku.

Rozważ plik z rozszerzeniem jpeg, ale w rzeczywistości zawiera zawartość tekstową/HTML. Po użyciu rozszerzeń i przejściu zabezpieczeń w module przesyłania plik zostaje pomyślnie przesłany. Przesłany plik jest wywoływany za pośrednictwem adresu URL, a podsłuchiwanie typu MIME zwraca w rezultacie tekst/HTML. Renderuje zawartość jako HTML. Wtedy pojawia się luka XSS.

Musisz więc uniemożliwić przeglądarkom decydowanie o zawartości przez sniffowanie typu MIME. Aby to zrobić, możesz użyć nosniff.

Nagłówek X-Content-Type-Options dla Nginx:

add_header X-Content-Type-Options nosniff; 

Nagłówek X-Content-Type-Options dla Apache:

Header always X-Content-Type-Options nosniff 

Nagłówek X-Content-Type-Options dla usług IIS:

<httpProtocol> 
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff" />
</customHeaders>
</httpProtocol>

Aplikacje internetowe śledzą sesje użytkowników za pomocą identyfikatora sesji. Przeglądarki będą to przechowywać i automatycznie dodawać do każdego żądania HTTP w zakresie pliku cookie.

To jest możliwe używać plików cookies do celów jednak inne niż przekazanie klucza sesji. Hakerzy mogą znaleźć dane użytkownika za pomocą wspomnianej wcześniej luki XSS lub poprzez atak Cross-Site Request Forgery (CSRF). Więc które pliki cookie są najważniejsze z punktu widzenia bezpieczeństwa?

Jako przykład możesz wziąć pod uwagę informacje zawarte w ostatnim obrazie, który kliknąłeś w galerii obrazów. W ten sposób ruch HTTP jest mniejszy, a część obciążenia może rozwiązać przeglądarka internetowa użytkownika za pomocą skryptów po stronie klienta.

  Wykorzystanie nagłówków HTTP do ochrony poufnych informacji w serwisie

To tam gdzie Tylko Http wejdzie. Poniżej znajduje się przykład tego, jak powinno wyglądać przypisanie plików cookie:

Set-Cookie: user=t=cdabe8a1c2153d726; path=/; HttpOnly 

Zwróć uwagę na wartość HttpOnly wysłaną w Zestaw-Cookie operacja. Przeglądarka zobaczy to i nie będzie przetwarzać wartości z flagą HttpOnly, gdy dostęp do pliku cookie jest uzyskiwany przez dokument.cookie zmienny. Inną flagą używaną w procesie Set-Cookie jest flaga Secure. Oznacza to, że wartość cookie zostanie dodana do nagłówka tylko w przypadku żądań HTTPS. Witryny e-commerce zwykle używają go, ponieważ chcą zmniejszyć ruch w sieci i zwiększyć wydajność.

Korzystając z tej metody, możesz ukryć krytyczne dane użytkowników, takie jak nazwy użytkowników, hasła i informacje o karcie kredytowej. Ale jest problem. Użytkownikom, którzy ukończą proces logowania, przypisywana jest wartość pliku cookie bez flagi Secure. Użytkownik może mieć klucz sesji, gdy wysyła żądanie HTTP do łączy innych niż HTTPS. Dodanie bezpiecznej flagi jest łatwe:

Set-Cookie: user=t=cdabe8a1c2153d726; path=/; Secure 

Kiedy nie należy używać HttpOnly? Jeśli polegasz na JavaScript, powinieneś zachować ostrożność, ponieważ może to spowodować, że Twoja witryna będzie mniej bezpieczna.

Małe kroki działają dla szerszego bezpieczeństwa w sieci

Nie potrzebujesz zaawansowanego oprogramowania i wiedzy o serwerach, aby zwiększyć bezpieczeństwo aplikacji internetowych. Zmieniając tylko kilka linijek, możesz zapobiec niektórym poważnym atakom. Oczywiście to nie wystarczy. Jest to jednak mały, ale skuteczny krok w kierunku bezpieczeństwa witryny. Wiedza jest najlepszym środkiem zapobiegawczym, dlatego warto również znać subtelne niuanse sposobu, w jaki protokół HTTPS chroni dane podczas przesyłania.