← Wszystkie testy
BezpieczeństwoTypowa waga: Średni

Skaner odsłoniętych source map

Sprawdza, czy Twoje source mapy (.map) są dostępne i pozwalają odtworzyć oryginalny kod źródłowy.

Co sprawdza

Ten skaner sprawdza, czy pliki source map (.map) twojej witryny są publicznie dostępne. Source mapy łączą minifikowany kod, który serwujesz, z twoim oryginalnym kodem źródłowym, a ten test wykrywa, gdy pozostają do pobrania na produkcji.

Dlaczego to ważne

Jeśli twoje source mapy są wystawione, każdy może odtworzyć twój oryginalny kod źródłowy dokładnie tak, jak go napisałeś, łącznie z komentarzami i strukturą. Ułatwia to znalezienie wewnętrznej logiki, endpointów czy ewentualnych sekretów, które uważałeś za ukryte za minifikacją.

Jak to naprawić

Skonfiguruj swój proces budowania tak, aby nie publikował plików .map na produkcji, albo zablokuj do nich dostęp z poziomu serwera lub CDN. Jeśli potrzebujesz ich do debugowania błędów, wgrywaj je wyłącznie do swojego narzędzia monitorującego, zamiast zostawiać na publicznej stronie.

Jak działa ta kontrola

Scanaris bierze pierwsze skrypty z Twojej domeny linkowane przez stronę główną, pobiera każdy i szuka na końcu komentarza //# sourceMappingURL=…, który zostawia narzędzie do builda. Jeśli istnieje, rozwiązuje ten URL, pobiera plik .map i sprawdza, czy to naprawdę source mapa (zawiera klucze sources lub mappings). Dopiero wtedy otwiera znalezisko ze średnią wagą. Source mapy osadzone jako data: się nie liczą, bo nie wystawiają osobnego pliku, a .map, który istnieje, ale na który nie wskazuje żaden skrypt, tą drogą też nie jest wykrywany.

Co atakujący z tym robi

Z plikiem .map i darmowym narzędziem odtwarza Twój kod źródłowy tak, jak go napisałeś: nazwy zmiennych, komentarze, strukturę katalogów i często rzeczy, które uważałeś za usunięte. Zwykle pojawiają się: wewnętrzne i administracyjne ścieżki API, logika cen lub limitów, którą da się ominąć od strony klienta, komentarze typu „TODO: usunąć ten klucz" i funkcje wyłączone, ale nieskasowane. Samo w sobie to nie włamanie, ale zamienia czarną skrzynkę w plan budynku.

Dlaczego publikuje się je przypadkiem

Niektóre szablony włączają mapy do debugowania i nikt ich nie wyłącza przy przejściu na produkcję. W Vite opcja build.sourcemap: true generuje je i dodaje komentarz; w Next.js productionBrowserSourceMaps: true; w Nuxt sourcemap.client: true. W innych przypadkach generuje je integracja monitoringu błędów, która potrzebuje map i zostawia je w katalogu publicznym zamiast wysłać tylko do swojej usługi.

Jak to naprawić

  • Vite / Lovable / Bolt: w vite.config build.sourcemap: false. Jeśli Twoje narzędzie do błędów ich potrzebuje, użyj wtyczki usługi (Sentry i podobne), która wysyła je podczas builda i usuwa z wyjścia.
  • Next.js: productionBrowserSourceMaps jest domyślnie false; sprawdź, czy nikt nie zmienił tego w next.config.
  • Nuxt: sourcemap: { client: false } w nuxt.config.
  • Zablokuj je na serwerze jako drugą barierę. W nginx: location ~ \.map$ { return 404; }. Na Vercelu lub Netlify wystarczy ich nie generować, bo serwowane jest tylko to, co jest w katalogu wyjściowym.

Jeśli wolisz je zachować do debugowania bez publikowania, opcja hidden w Vite generuje pliki bez linkującego komentarza; mimo to lepiej nie wrzucać ich do katalogu publicznego, bo pozostają dostępne dla każdego, kto zgadnie nazwę.

Sprawdź, czy naprawione

curl -s https://twojadomena.com | grep -oE 'src="[^"]+\.js[^"]*"' | cut -d'"' -f2 | head -3
curl -s https://twojadomena.com/assets/index-XXXX.js | tail -c 200
curl -sI https://twojadomena.com/assets/index-XXXX.js.map | head -1

Drugie polecenie nie powinno pokazać żadnego sourceMappingURL, a trzecie powinno zwrócić 404. Jeśli pierwsze nie wypisuje skryptów, Twoja strona ładuje je inaczej; zajrzyj do narzędzi przeglądarki, zakładka Sieć.

Często zadawane pytania

Czy potrzebuję source map, żeby rozumieć błędy na produkcji?

Tak, ale nie muszą być publiczne. Usługi monitoringu przyjmują mapy podczas builda i wiążą je z tą wersją; przeglądarka nigdy ich nie widzi.

Czy mapy CSS też są problemem?

Dużo mniejszym: wystawiają Twoje oryginalne arkusze stylów, nie logikę. Skaner sprawdza tylko te od JavaScriptu.

Dlaczego waga średnia, a nie wysoka?

Bo mapa sama w sobie nie daje do niczego dostępu; ułatwia znalezienie innych błędów. Jeśli kod zawiera dodatkowo klucze albo niechronione ścieżki administracyjne, to są poważne znaleziska i Scanaris oznacza je osobno.

Sprawdź to na swojej stronie

Przeskanuj swoją stronę za darmo i zobacz, czy ten i 44 inne testy przechodzą, z promptem naprawczym dla każdego problemu.

Przeskanuj moją stronę za darmo

Z bloga

Powiązane testy