Site icon Tosolini.info

Node.js gestiamo le chiave private.

Vediamo un piccolo trucco su come trattare eventuali chiavi private all’interno di un progetto Node.js. Si tratta sicuramente di una esigenza abbastanza comune, come ad esempio nella pubblicazione in Github dei sorgenti. Di certo non vogliamo mettere alla berlina chiavi pubbliche e private di servizi a noi intestati.

I requisiti sono Node.js versione del ramo 8.x, Express Framework e il middleware cookie-session. Portiamo un esempio semplice, come la protezione della chiave di generazione di un cookie relativo al nostro progetto.

Per prima cosa creiamo una cartella, ad esempio config nella root del nostro progetto. Quindi creiamo al suo interno il file keys.js.

All’interno struttureremo il file come segue:

module.exports = {
   cookie-a: 'abc1234',
   cookie-b: 'def5678'
};

A questo punto immaginiamo di dover utilizzare la chiave all’interno del file principale. Andremo ad utilizzarlo in questo modo:

// per prima cosa importiamo il file
const keys = require ('./config/keys');

// app precedentemente dichiarato con express
app.use(
  cookieSession({
    name: 'session',
    maxAge: 30 * 34 * 60 * 60 * 1000,
    keys: [keys.cookie-a, keys.cookie-b]
  })
);

App sarà stato precedentemente dichiarato tramite Express e non è l’oggetto di questo articolo. Al suo interno utilizzeremo il middleware cookieSession che ci permetterà di utilizzare un cookie nella sessione dell’utente. Con maxAge abbiamo definito la scadenza, name si commenta da solo. Ora arriva la parte che ci interessa, la definizione delle chiavi.

All’inizio del file abbiamo prima richiamato con un require la variabile non modificabile “keys” che punta al nostro file javascript corrispondente. Quindi visto che il file dichiarato in precedenza permette l’export del dato json, possiamo richiamarlo come un array di dati dove si può andare a puntare in modo preciso la coppia chiave:valore che vogliamo utilizzare. Pongo infatti l’attenzione alla voce keys.cookie-a dove keys è la variabile e cookie-a è il valore corrispondente dichiarato in keys.js.

A questo punto dobbiamo solo istruire gitignore ad ignorare il file keys.js. Se non l’abbiamo già presente creiamo nella root del progetto il file .gitignore (fate attenzione al punto prima del nome del file) e al suo interno in una nuova riga scriviamo semplicemente keys.js che è il nome del file che abbiamo utilizzato all’inizio. Ora quando andremo a fare il commit su git o gitHub questo file non sarà caricato. Questo presuppone che vi premuriate di utilizzare altri tipi di backup che non prevedono l’esposizione pubblica.

Exit mobile version