DanLevy.net

Proteggere i Tuoi Token, Chiavi API e Segreti

Pubblico? Privato? Wat?

Hero image for Proteggere i Tuoi Token, Chiavi API e Segreti

Quando proteggere i tuoi token?

Mettere in sicurezza le chiavi API e i token è fondamentale!

Un errore può portare alla perdita del controllo del tuo server e dei dati da parte degli hacker!

Non dovrebbe essere così difficile determinare se un particolare token debba essere nascosto, anche basandosi sulla documentazione ufficiale!

Spesso la situazione è aggravata dalla zuppa di termini correlati che incontrerai: token, chiavi, credenziali, segreti, privati e pubblici.

Riformuliamo il concetto distinguendo tra segreto e non segreto.



🔒 Chiavi segrete

** ‼️ Importante:** le chiavi segrete DEVONO essere ignorate da Git E omesse in tutto il codice del browser. Come usare dotenv


Come fai a sapere quando hai a che fare con una chiave segreta?


👍 Regola pratica: i server che restituiscono errori CORS non supportano il browser. Indica fortemente che DEVI usare un proxy per il servizio, trattandolo come se fosse segreto.

👍 Regola pratica: i servizi costosi dovrebbero (quasi) sempre essere nascosti o usati tramite proxy.

👍 Regola pratica: se esegui un’operazione di scrittura (upload di file, inserimento di righe nel db), potresti avere a che fare con chiavi segrete.


Casi d’uso e funzionalità: chiavi segrete

Checklist: Gestire i Segreti in Modo Sicuro

Panoramica Rapida

Completa i seguenti passaggi per eliminare i segreti dal tuo codice:

NON creare un file .env sui server distribuiti. Usa lo strumento di gestione delle variabili d’ambiente fornito dal tuo servizio di hosting (es. Heroku, Netlify, AWS EC): ad esempio dashboard o riga di comando.

Articolo Correlato: Usare dotenv in modo sicuro in NodeJS


🌍 Chiavi non segrete

👍 Regola pratica: ogni volta che una chiave deve essere inviata al browser nel codice o inline (es. tramite un tag <script src="https://my-api/?apiKey=123-abc-456">), è sicuramente una chiave non segreta. Un esempio comune è Google Maps.


Casi d’uso e funzionalità: chiavi non segrete

✅ Gestione dei Non-Segreti:

È sicuro hardcoded le chiavi non segrete (pubbliche)!

Rendi tutto più facile da gestire a lungo termine con un config.js condiviso per la tua app.

Esempio:

config.js
module.exports = {
googleMapsKey: '123-abc'
};
load-map.js
const config = require('./config.js');
const key = config.googleMapsKey;
const src = `//maps.googleapis.com/maps/api/js?key=${key}`;
// ...

Nota: ci sono altri casi d’uso per le variabili d’ambiente. Alcuni che non ho trattato: CI/CD/testing, feature flag e configurazione di runtime per ambienti speciali!