Joomla 4 będzie miała wbudowany mechanizm kontroli nagłówków HTTP. Dowiesz się w artykule czym są nagłówki i czemu są takie ważne, jeśli mowa o bezpieczeństwie! Joomla 4 będzie już na starcie oferować pewne zabezpieczenie na tym właśnie polu. Dobrze, żebyś wiedział już teraz co to będzie i jak dostosować do swoich potrzeb nagłówki.

CZYM SĄ NAGŁÓWKI HTTP

Nagłówki HTTP można określić jako zestaw instrukcji, komend do komunikacji między serwerem, a przeglądarka. Przeglądarka pyta serwer i w odpowiedzi dostaje zestaw informacji przydatny do obsługi strony. Kilka bardzo popularnych to na przykład długość życia pamięci podręcznej czy obsługa kompresji gzip, język czy data. O tyle nagłówki są ważne, ponieważ między komunikacją serwera a przeglądarką może się coś nieporządnego wydarzyć co pozwoli na przekierowanie użytkownika w całkiem inne miejsce lub nawet wstrzyknięcie złośliwego kodu. 

NAGŁÓWKI HTTP ZWIĄZANE Z BEZPIECZEŃSTWEM

Nagłówki związane stricte z bezpieczeństwem to:

STRICT-TRANSPORT-SECURITY

Wymusza użycie bezpiecznego połączenia HTTPS podczas każdej następnej wizyty na odwiedzanej stronie do momentu upływu czasu max-age w sekundach od ostatniego skutecznego wczytania danej strony zawierającej ten nagłówek, jednak nie wcześniej, niż do końca najdłuższego okresu spośród napotkanych. Używany w celu zapobiegania atakom man in the middle oraz SSL strip. W przypadku tego nagłówka przeglądarka użytkownika nie ma prawa zaproponować zignorowania lub ominięcia błędu, który powstanie w razie braku lub niezgodności certyfikatu serwera. W prostych słowach chroni to użytkownika przed odesłaniem do niezabezpieczonej strony http między sesją https. 

CONTENT SECURITY POLICY (CSP)

To dodatkowa warstwa zabezpieczeń, która pomaga wykrywać i łagodzić niektóre typy ataków, w tym Cross Site Scripting (XSS) i ataki polegające na wstrzykiwaniu danych. Ataki te są wykorzystywane do wszystkiego, od kradzieży danych, po dystrybucję złośliwego oprogramowania. CSP pozwala zdefiniować politykę przychodzących połączeń zewnętrznych do strony www. 

W Joomla 4 CSP jest cały dedykowany mechanizm, który pozwala uprościć wdrażanie polityki. Aby odnaleźć CSP w Joomla 4 trzeba udać się do systemu. 

joomla 4 nagłówki http dodatki headers csp ustawienia

Następnie wejść w opcje i uruchomić.

joomla 4 nagłówki http dodatki headers csp ustawienia off

Domyślnie w Joomla 4 CSP jest wyłączony. Ponieważ włączenie wymaga dodatkowych kroków w celu wskazania zewnętrznych źródeł skryptów, fontów i innych źródeł, które upiększają czy też analizują stronę.

CONTENT SECURITY POLICY - REPORT ONLY

Specjalny tryb, aby ułatwić wdrażanie, CSP można wdrożyć w trybie tylko dla raportowania. Wszelkie naruszenia są zgłaszane pod podany identyfikator URI. Ponadto nagłówek zawierający tylko raport może służyć do testowania przyszłej zmiany zasad bez jej rzeczywistego wdrażania.

X-FRAME OPTIONS

Nagłówek odpowiedzi HTTP X-Frame-Options może służyć do wskazania, czy przeglądarka powinna mieć możliwość renderowania strony w <frame>, <iframe>, <embed> lub <object>. Witryny mogą to wykorzystać, aby uniknąć ataków polegających na przechwytywaniu kliknięć, zapewniając, że ich zawartość nie jest osadzana w innych witrynach.
Dodatkowe zabezpieczenia są zapewniane tylko wtedy, gdy użytkownik uzyskujący dostęp do dokumentu używa przeglądarki obsługującej X-Frame-Options.

X-XSS-PROTECTION

Nagłówek odpowiedzi HTTP X-XSS-Protection to funkcja przeglądarek Internet Explorer, Chrome i Safari, która zatrzymuje ładowanie stron po wykryciu ataków z użyciem odwróconych skryptów krzyżowych (XSS). Chociaż te zabezpieczenia są w większości niepotrzebne w nowoczesnych przeglądarkach, gdy witryny stosują silne zabezpieczenia treści.
Zasada, która wyłącza korzystanie ze wbudowanego kodu JavaScript („niebezpiecznego w treści”), nadal może zapewniać ochronę użytkownikom starszych przeglądarek internetowych, które jeszcze nie obsługują CSP.

X-CONTENT-TYPE-OPTIONS

Nagłówek HTTP odpowiedzi X-Content-Type-Options jest znacznikiem używanym przez serwer do wskazania, że ​​typy MIME ogłaszane w nagłówkach Content-Type nie powinny być zmieniane i należy ich przestrzegać. Jest to sposób na rezygnację z podsłuchiwania typu MIME lub, innymi słowy, stwierdzenie, że typy MIME są celowo konfigurowane.

Joomla 3 wprowadziła ten nagłówek poprzez zapis w regule .htaccess

HTTP REFERRER-POLICY

Nagłówek HTTP Referrer-Policy kontroluje, ile informacji o stronie odsyłającej (wysyłanej przez nagłówek Referer) powinno być dołączonych do żądań. Za domyślną opcje przyjmuje się "no-referrer-when-downgrade" co ozacze że: wysyłanie HTTP -> HTTP, HTTPS -> HTTPS lub HTTP -> HTTPS, ale nie jest wysyłany do mniej bezpiecznych miejsc z http, czyli HTTPS -> HTTP

EXPECT-CT

Nagłówek Expect-CT pozwala witrynom wyrazić zgodę na raportowanie i - lub egzekwowanie wymagań Certificate Transparency, aby zapobiec niezauważeniu wykorzystania błędnie wydanych certyfikatów dla tej witryny. 
Więcej informacji znajdziesz w tym artykule.

HTTP FEATURE-POLICY

Nagłówek HTTP Feature-Policy zapewnia mechanizm zezwalania i blokowania korzystania z funkcji przeglądarki w jej własnej ramce oraz w treści w dowolnych elementach <iframe> w dokumencie. Dla przykładu, jeśli jesteś pewny, że na Twojej stronie nie będzie wymagane używania kamery lub mikrofonu to możesz ustawić w nagłówku taka informacje i zabezpieczyć przez potencjalnym nadużyciem.

HTTP PERMISSIONS-POLICY

Nagłówek HTTP Feature-Policy zostanie zastąpiony na rzecz HTTP PERMISSIONS-POLICY.

GDZIE W JOOMLA 4 USTAWIA SIĘ NAGŁÓWKI HTTP

Zaloguj się do panelu administracyjnego i przejdź do system, a następnie plugins (dodatki).

joomla 4 nagłówki http dodatki

Następnie wpisz w wyszukiwarkę "headers" i wejdź do ustawień dodatku.

joomla 4 nagłówki http dodatki headers wyszukanie

Domyśle ustawienia to:

joomla 4 nagłówki http dodatki headers ustawienia

joomla 4 nagłówki http dodatki headers ustawienia hsts wyłączony

HSTS - wyłaczony. Niestety certyfikaty SSL nie są jeszcze w 100% rozpowszechnione mimo darmowej inicjatywy Lets Encrypts. Statystyki mówiły w 2018 roku, że co najmniej 20% dużych witryn nie używa certyfikatu.

Dodatkowe ustawiania:

joomla 4 nagłówki http dodatki headers ustawienia dodatkowe

Dodatkowe nagłówki do ręcznego ustawiania:

Możemy zdefiniować czy nagłówek ma się tyczyć zaplecza, witryny czy też obu naraz. 

Dodatkowo:

Został wprowadzony nowy zapis w .htaccess, który domyślnie jest wyłączony.

#Protect against certain cross-origin requests. More information can be found here:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Cross-OriginResourcePolicy_(CORP)
https://web.dev/why-coop-coep/
#<IfModule mod_headers.c>

#Header always set Cross-Origin-Resource-Policy "same-origin"
#Header always set Cross-Origin-Embedder-Policy "require-corp"
#</IfModule>

PODSUMOWANIE

Bardzo dobrym krokiem w Joomla 4 jest możliwość definiowania nagłówków. Jednak osobiście wolałbym, aby na starcie najwięcej parametrów była zdefiniowana już optymalnie. Niektóre opcje mógłby się podpowiadać po włączeniu SSL jak HSTS czy Expect-C. Permissions-Policy, które mogłaby, mieć już predefiniowane ustawania w formie przełączników WŁĄCZ - WYŁĄCZ. Dlaczego tak uważam? To proste! Większość użytkowników nigdy tam nie zajrzy i nic nie zmieni więc czemu nie zabezpieczyć ich maksymalnie. Po drugie ręczne definiowanie bez przykładów zawsze kończy się jakimś błędem po stronie niezaawansowanego użytkownika, który potencjalnie będzie chciał zwiększyć bezpieczeństwo. Nagłówki dla zwykłej osoby to po prostu czarna magia. Zwarzywszy na to, iż nie mamy z nimi bezpośrednio do czynienia, ponieważ dla użytkownika są transparentne.

Czy jest coś, co chciałbyś wiedzieć o nagłówkach HTTP w Joomla 4?

Poniżej zamieszczam dla Ciebie przydatne linki do sprawdzenia na przykład HSTS i bezpieczeństwa nagłówków dla witryny.

Przydatne linki:

Kolejne z cyklu artykuły o nowościach w Joomla 4:

  1. Joomla 4 Inteligentne wyszukiwanie (smart-search)
  2. Joomla 4 Szablony wiadomości e-mail. 
  3. Joomla 4 i wcag, czyli dostępność cyfrowa.
  4. Joomla 4 - Nagłówki HTTP - Bezpieczeństwo
  5. Joomla 4 - Logowanie bez haseł (w3c web authentication)