Jak działa ta kontrola
Scanaris odczytuje nagłówki głównej odpowiedzi Twojej strony i patrzy na dwa konkretne. Jeśli istnieje X-Powered-By z jakąkolwiek wartością (na przykład Express, PHP/8.2.12 lub Next.js), otwiera ustalenie o niskiej wadze. Jeśli istnieje Server i jego wartość zawiera numer wersji (coś jak nginx/1.18.0 lub Apache/2.4.57), otwiera kolejne. Samo Server: nginx lub Server: cloudflare nie jest oznaczane: powiedzenie, jakiego serwera używasz, nie jest problemem; powiedzenie, której dokładnie wersji, już tak.
Dlaczego to ważne
Żaden z tych nagłówków niczego nie daje użytkownikowi ani przeglądarce. Istnieją z przyzwyczajenia. To, co robią, to oszczędzanie pracy temu, kto szuka podatności: mając PHP/7.4.3 lub Apache/2.4.49 w odpowiedzi, atakujący nie musi niczego zgadywać, idzie prosto do listy znanych błędów tej wersji i próbuje tych z publicznym exploitem. To ustalenie o niskiej wadze, bo samo w sobie nie otwiera żadnych drzwi; ale należy do najłatwiejszych do zamknięcia, a masowe skanery filtrują cele dokładnie po tych nagłówkach.
Jak je usunąć w zależności od stacku
- Express:
app.disable('x-powered-by')przy tworzeniu aplikacji albo użyjhelmet(), który usuwa go razem z innymi wzmocnieniami. - Next.js: domyślnie wysyła
X-Powered-By: Next.js. Wnext.config.js:poweredByHeader: false. - PHP: w
php.ini,expose_php = Off. Na hostingu współdzielonym zwykle da się to zmienić w panelu albo przez.user.ini. - ASP.NET: w
web.config, w sekcjicustomHeaders,<remove name="X-Powered-By" />, a w IIS wyłącz też nagłówekX-AspNet-VersionprzezenableVersionHeader="false". - nginx:
server_tokens off;w blokuhttp. Nadal mówi „nginx", ale bez wersji. - Apache:
ServerTokens ProdiServerSignature Offw głównej konfiguracji. PrzyProdnagłówek to po prostuApache. - Vercel, Netlify, Cloudflare Pages: nie wysyłają wersji w
Server. Jeśli widzisz tamX-Powered-By, pochodzi z Twojego frameworka (Next.js lub Express), nie z platformy.
Jeśli masz przed sobą proxy lub CDN (Cloudflare, load balancer), sprawdź publiczną odpowiedź: czasem proxy podmienia nagłówek Server i problem znika sam, ale X-Powered-By zwykle przechodzi nietknięty.
Sprawdź, czy naprawione
curl -sI https://twojadomena.pl | grep -iE "^(server|x-powered-by):"
Idealnie X-Powered-By nie pojawia się wcale, a Server, jeśli się pojawia, nie ma numeru. Sprawdź też ścieżkę API albo stronę błędu (adres, który nie istnieje): błędy bywają generowane w innej warstwie, która dodaje nagłówek z powrotem.
Często zadawane pytania
Ukrycie wersji nie naprawia podatności. Po co to robić?
Żeby nie być na pierwszej stronie wyników u tego, kto szuka ofiar. Masz rację, że prawdziwym rozwiązaniem jest aktualizacja: ukrycie wersji to uzupełnienie, nie zamiennik. Obie rzeczy razem zajmują pięć minut.
Mój hosting nie pozwala mi ruszać konfiguracji serwera.
W takim razie usuń przynajmniej X-Powered-By z kodu albo z .htaccess (Header unset X-Powered-By) i poproś hosting o ukrycie wersji. Pozostałe nagłówki bezpieczeństwa, te, które powinieneś mieć, sprawdza kontrola nagłówki bezpieczeństwa.
Dlaczego „Server: cloudflare" nie jest oznaczane?
Bo nie ujawnia nic użytecznego: ani wersji, ani konkretnego oprogramowania za nim. Szukamy tu informacji, która skraca drogę do exploita. Które nagłówki warto mieć, a które są tylko szumem, wyjaśnia nagłówki HTTP wyjaśnione dla ludzi.