Le source map in produzione fanno trapelare il tuo codice sorgente
Le source map (file .js.map) permettono ai browser di ricondurre il codice minificato al tuo codice sorgente originale. Se vengono servite pubblicamente in produzione, chiunque può ricostruire la tua base di codice non minificata, commenti compresi.
Che cos'è
Gli strumenti di build generano source map per facilitare il debug. Quando il bundle minificato fa riferimento a un file .map anch'esso distribuito, il browser — e chiunque — può scaricare il codice sorgente originale.
Questo espone la logica interna, i nomi, i commenti TODO e talvolta valori hardcoded che rivelano come funzionano il tuo backend e l'autenticazione.
Perché è importante
Un codice sorgente leggibile rende molto più facile per i malintenzionati trovare falle logiche, endpoint nascosti e validazioni che girano solo sul client.
Può anche far trapelare secret o URL interni che si presumeva fossero 'nascosti' dentro il bundle.
Come risolverlo
Disattiva le source map del browser per le build di produzione.
// next.config.js
module.exports = { productionBrowserSourceMaps: false };Se ti servono le source map per il monitoraggio degli errori, caricale sul tuo error tracker (ad es. Sentry) e rimuovile dalla build pubblica invece di servirle.
Dopo il deploy, richiedi uno degli URL .map del tuo bundle. Dovrebbe restituire 404, non la source map JSON.
FAQ
Le source map sono sempre un male?
No: sono preziosissime per il debug. Il problema è servirle pubblicamente in produzione. Tienile invece nella tua pipeline di monitoraggio.
La minificazione protegge il mio codice?
Solo superficialmente. Con una source map pubblica, la minificazione viene completamente annullata riportando a un codice leggibile.
La tua app è interessata?
AppSafe controlla questo e decine di altri problemi in un'unica scansione gratuita.
Scansiona la mia app gratisGuide correlate
API key esposte nel JavaScript lato client
Tutto ciò che è nel tuo bundle è pubblico. Trattalo come tale.
File .env esposti: come i malintenzionati trovano i tuoi secret
Un solo .env raggiungibile può consegnare l'intero stack.
Content-Security-Policy (CSP): cos'è e come aggiungerla
L'header che impedisce l'esecuzione degli script iniettati.