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.
Spis Treści
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
- Content-Security-Policy
- Content-Security-Policy-Report-Only
- X-Frame-Options
- X-XSS-Protection
- X-Content-Type-Options
- Referrer-Policy
- Expect-CT
- Feature-Policy
- Permissions-Policy
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.
Następnie wejść w opcje i uruchomić.
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).
Następnie wpisz w wyszukiwarkę "headers" i wejdź do ustawień dodatku.
Domyśle ustawienia to:
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:
Dodatkowe nagłówki do ręcznego ustawiania:
- Strict-Transport-Security
- Content-Security-Policy
- Content-Security-Policy-Report-Only
- X-Frame-Options
- X-XSS-Protection
- X-Content-Type-Options
- Referrer-Policy
- Expect-CT
- Feature-Policy
- Permissions-Policy
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:
- https://hstspreload.org
- https://securityheaders.com
- https://docs.joomla.org/J4.x:HttpHeaderManagement
- https://github.com/nico3333fr/CSP-useful/tree/master/csp-wtf
- https://github.com/zero-24/csp-reporter-php
Kolejne z cyklu artykuły o nowościach w Joomla 4: