Jak działa ta kontrola
Scanaris żąda siedmiu typowych katalogów Twojej domeny: /uploads/, /images/, /assets/, /files/, /backup/, /static/ i /media/. Jeśli któryś odpowiada stroną, której tytuł lub nagłówek to „Index of …", czyli format generowany przez Apache, nginx i większość serwerów przy listowaniu katalogu, otwiera ustalenie o średniej wadze ze ścieżką. Samo 200 nie jest zgłaszane: aplikacja jednostronicowa zwracająca swój HTML na wszystkich ścieżkach nie pasuje do wzorca.
Dlaczego to ważne
Listing zamienia katalog w przeglądalny katalog wszystkiego, co zawiera, również tego, czego nigdy nie podlinkowano z żadnej strony: kopii zapasowych, eksportów, dokumentów wgranych przez użytkowników, starych wersji plików, zdjęć produktów jeszcze nieopublikowanych. Nie trzeba zgadywać nazw; serwer podaje je posortowane i z datą. I to pierwsze miejsce, w które zagląda automatyczny skaner, bo otwarty listing często prowadzi do czegoś gorszego w tym samym katalogu.
Dlaczego tak się dzieje
Serwer WWW przy żądaniu katalogu bez index.html ma dwie opcje: odpowiedzieć 403 albo wygenerować listę. Apache i niektóre panele hostingu współdzielonego przychodzą z włączoną listą; nginx ma ją wyłączoną, chyba że ktoś włączył ją przez autoindex on. W aplikacjach Express zapomniany serve-index albo express.static z opcjami listowania robi to samo.
Jak to naprawić
- nginx: poszukaj
autoindex onw konfiguracji i zmień naoff(albo usuń; wyłączone to wartość domyślna). - Apache: w VirtualHost lub w
.htaccessw roocie,Options -Indexes. - Express: usuń każde użycie
serve-indexi sprawdź, czyexpress.staticwskazuje tylko na katalog builda. - Hosting współdzielony: panel zwykle ma opcję „Index Manager" lub „Directory browsing"; ustaw ją na „No indexing" dla domeny.
- Vercel, Netlify i podobne nie generują listingów; jeśli widzisz tam ustalenie, katalog należy do innego serwera odpowiadającego pod Twoją domeną.
Potem sprawdź, co było w listowanych katalogach: wszystko, co tam leżało, było publiczne, nawet jeśli lista nie jest już widoczna. Jeśli były tam kopie zapasowe lub dane użytkowników, uznaj je za pobrane i działaj odpowiednio. I przenieś prywatne rzeczy poza katalog serwowany przez serwer; kontrole wrażliwe pliki i wystawione kopie zapasowe obejmują najpoważniejsze przypadki.
Sprawdź, czy naprawione
for d in uploads images assets files backup static media; do
printf "%-10s " "$d"; curl -s "https://twojadomena.pl/$d/" | grep -c "Index of"
done
Wszystkie muszą zwrócić 0. Wypróbuj też każdy inny katalog, o którym wiesz, że istnieje na Twoim serwerze, jak /wp-content/uploads/ czy /docs/.
Często zadawane pytania
Mój katalog ze zdjęciami i tak jest publiczny. Co za różnica, czy jest listowany?
Różnica jest między kimś, kto może zobaczyć zdjęcie, którego adres zna, a kimś, kto może zobaczyć wszystkie, w tym te wgrane na kampanię jeszcze nieuruchomioną albo te konkretnego klienta. Listing ujawnia też nazwy plików, które czasem zawierają dane osobowe.
Dlaczego testowanych jest tylko siedem katalogów?
To te, w których skupia się większość otwartych listingów na prawdziwych stronach. Jeśli Twój serwer ma włączone listowanie, zwykle dotyczy to wszystkich, więc poprawka w konfiguracji zamyka je wszędzie.
Czy listing pustego katalogu to problem?
Drobny, ale wskazuje, że listowanie jest włączone na serwerze. I tak je wyłącz: katalog nie zostanie pusty na zawsze.