← Alle checks
BeveiligingTypische ernst: Gemiddeld

Scanner voor blootgestelde source maps

Controleert of je source maps (.map) toegankelijk zijn en iedereen je oorspronkelijke broncode laten reconstrueren.

Wat het checkt

Deze scanner controleert of de source map-bestanden (.map) van je site openbaar toegankelijk zijn. Source maps koppelen de geminificeerde code die je serveert terug aan je oorspronkelijke broncode, en deze check detecteert wanneer ze in productie te downloaden blijven.

Waarom het belangrijk is

Als je source maps blootliggen, kan iedereen je oorspronkelijke broncode precies reconstrueren zoals je hem schreef, inclusief commentaar en structuur. Dat maakt het makkelijker om interne logica, endpoints of mogelijke geheimen te vinden waarvan je dacht dat ze achter de minificatie verborgen zaten.

Hoe je het oplost

Stel je build-proces zo in dat er geen .map-bestanden in productie worden gepubliceerd, of blokkeer de toegang ertoe via de server of het CDN. Heb je ze nodig om fouten te debuggen, upload ze dan alleen naar je monitoringtool in plaats van ze op de publieke site te laten staan.

Hoe deze controle werkt

Scanaris neemt de eerste scripts van je eigen domein die de homepage koppelt, downloadt ze een voor een en zoekt aan het einde de opmerking //# sourceMappingURL=… die de buildtool achterlaat. Als die bestaat, lost het die URL op, vraagt het .map-bestand op en controleert het dat het echt een source map is (het bevat de sleutels sources of mappings). Pas dan opent het de bevinding, met gemiddelde ernst. Source maps die als data: zijn ingebed tellen niet mee, omdat ze geen apart bestand blootstellen, en een .map die bestaat maar waarnaar geen enkel script wijst, wordt via deze weg ook niet gedetecteerd.

Wat een aanvaller hiermee doet

Met de .map en een gratis tool bouwt hij je broncode opnieuw op zoals jij die schreef: variabelenamen, opmerkingen, mappenstructuur en vaak dingen waarvan je dacht dat ze weg waren. Wat meestal opduikt: interne en admin-API-routes, prijs- of limietlogica die vanuit de client te omzeilen is, opmerkingen als "TODO: deze sleutel weghalen" en uitgeschakelde maar niet verwijderde functies. Het is op zichzelf geen inbraak, maar het maakt van een zwarte doos een plattegrond.

Waarom ze per ongeluk gepubliceerd worden

Sommige templates schakelen de maps in om te debuggen en niemand zet ze uit bij de overgang naar productie. In Vite genereert de optie build.sourcemap: true ze en voegt de opmerking toe; in Next.js productionBrowserSourceMaps: true; in Nuxt sourcemap.client: true. In andere gevallen genereert een foutmonitoringintegratie ze, die de maps nodig heeft en ze in de publieke map laat staan in plaats van ze alleen naar haar dienst te uploaden.

Hoe je het oplost

  • Vite / Lovable / Bolt: in vite.config, build.sourcemap: false. Heeft je fouttool ze nodig, gebruik dan de plugin van de dienst (Sentry en vergelijkbare) die ze bij de build uploadt en uit de output verwijdert.
  • Next.js: productionBrowserSourceMaps staat standaard op false; controleer dat niemand het in next.config heeft veranderd.
  • Nuxt: sourcemap: { client: false } in nuxt.config.
  • Blokkeer ze op de server als tweede barrière. In nginx: location ~ \.map$ { return 404; }. Op Vercel of Netlify volstaat het om ze niet te genereren, omdat alleen wat in de outputmap staat wordt geserveerd.

Wil je ze liever bewaren om te debuggen zonder ze te publiceren, dan genereert de optie hidden van Vite de bestanden zonder de koppelende opmerking; houd ze dan toch buiten de publieke map, want ze blijven bereikbaar voor wie de naam raadt.

Controleer of het is opgelost

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

Het tweede commando mag geen sourceMappingURL tonen, en het derde moet 404 teruggeven. Toont het eerste commando geen scripts, dan laadt je pagina ze anders; kijk in de browsertools, tabblad Netwerk.

Veelgestelde vragen

Heb ik source maps nodig om productiefouten te begrijpen?

Ja, maar ze hoeven niet publiek te zijn. Monitoringdiensten accepteren de maps bij de build en koppelen ze aan die versie; de browser ziet ze nooit.

Zijn CSS-maps ook een probleem?

Veel minder: ze stellen je originele stylesheets bloot, geen logica. De scanner bekijkt alleen die van JavaScript.

Waarom gemiddelde ernst en niet hoog?

Omdat een map op zichzelf nergens toegang toe geeft; hij maakt het vinden van andere fouten makkelijker. Bevat de code ook sleutels of onbeschermde adminroutes, dan zijn dat de ernstige bevindingen, en die markeert Scanaris apart.

Check het op je site

Scan je site gratis en zie of deze en 44 andere checks slagen, met een fixprompt voor elk probleem.

Mijn site gratis scannen

Uit de blog

Gerelateerde checks