2013-07-04 98 views
6

文檔說它應該是祕密的,但我的代碼發佈在github上。我應該如何使用express.cookieParser()祕密?

app.use(express.cookieParser(crypto.randomBytes(64).toString()))工作,還是應該保密是相同的,當服務器重新啓動?我應該將密碼存儲在磁盤上嗎?它需要多大的祕密?

回答

4

要保持你的祕密的祕密,你可以在環境變量中(稱爲「COOKIE_SECRET」爲例)設置它,然後你可以這樣做:

var cookieSecret = process.env.COOKIE_SECRET; 

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

(或者,如果你想更復雜的配置設置,你可能想看看nconf它統一了跨環境變量,命令行參數和平面文件的配置)。

3

如果您想在重新啓動後保留會話,它應該是相同的。 祕密用於驗證服務器上的會話數據以防止格式錯誤的cookie數據。 也許你可以將你的隨機數據寫入一個文件,並從應用程序啓動時的文件中讀取祕密,如果文件存在,則不創建新的隨機密鑰。

3

祕密用於解析和匹配會話cookie。如果您在重新啓動後更改它,則會使先前的會話無效,因爲Cookie不會以新密碼生效。

儘管如此,如果餅乾被盜,您可能會考慮更改祕密,哪種保護您。將祕密存儲在需要它的地方以外的地方並不是一個好習慣。與任何祕密和鹽類一樣,因爲訪問它們不利於您的安全。

相關問題