2013-07-04 10 views
6

I documenti dicono che dovrebbe essere segreto, ma il mio codice è pubblicato su github.Cosa devo usare per express.cookieParser() segreto?

app.use(express.cookieParser(crypto.randomBytes(64).toString()))app.use(express.cookieParser(crypto.randomBytes(64).toString())) o il segreto dovrebbe essere lo stesso al riavvio del server? Dovrei conservare il segreto su disco? Quanto deve essere segreto?

risposta

4

Per mantenere il vostro segreto segreto, è possibile impostare in una variabile d'ambiente (chiamato 'COOKIE_SECRET' per esempio) e quindi si può fare:

var cookieSecret = process.env.COOKIE_SECRET; 

app.use(express.cookieParser(cookieSecret)); 

(O se si desidera una più sofisticata configurazione config , potresti dare un'occhiata a nconf. Unifica la configurazione tra variabili d'ambiente, argomenti della riga di comando e file flat).

3

Dovrebbe essere lo stesso se si desidera mantenere le sessioni dopo un riavvio. Il segreto viene utilizzato per convalidare i dati di sessione sul server per impedire dati di cookie non validi. Forse puoi scrivere i tuoi dati casuali in un file e leggere il segreto dal file all'avvio dell'app e se il file esiste non crei una nuova chiave casuale.

3

Segreto è utilizzato per analizzare e abbinare il cookie di sessione. Se lo stai modificando dopo il riavvio, renderà le sessioni precedenti nulle poiché il cookie non sarà valido con il nuovo segreto.

Ancora, nel caso in cui i cookie venissero rubati, potreste considerare di cambiare segreto, che tipo di protezione vi protegge. Non è consigliabile archiviare segreti in luoghi diversi da quelli in cui è necessario. Lo stesso vale per i segreti e i sali, in quanto l'accesso a questi non fa bene alla sicurezza.