文檔說它應該是祕密的,但我的代碼發佈在github上。我應該如何使用express.cookieParser()祕密?
會app.use(express.cookieParser(crypto.randomBytes(64).toString()))
工作,還是應該保密是相同的,當服務器重新啓動?我應該將密碼存儲在磁盤上嗎?它需要多大的祕密?
文檔說它應該是祕密的,但我的代碼發佈在github上。我應該如何使用express.cookieParser()祕密?
會app.use(express.cookieParser(crypto.randomBytes(64).toString()))
工作,還是應該保密是相同的,當服務器重新啓動?我應該將密碼存儲在磁盤上嗎?它需要多大的祕密?
要保持你的祕密的祕密,你可以在環境變量中(稱爲「COOKIE_SECRET」爲例)設置它,然後你可以這樣做:
var cookieSecret = process.env.COOKIE_SECRET;
app.use(express.cookieParser(cookieSecret));
(或者,如果你想更復雜的配置設置,你可能想看看nconf它統一了跨環境變量,命令行參數和平面文件的配置)。
如果您想在重新啓動後保留會話,它應該是相同的。 祕密用於驗證服務器上的會話數據以防止格式錯誤的cookie數據。 也許你可以將你的隨機數據寫入一個文件,並從應用程序啓動時的文件中讀取祕密,如果文件存在,則不創建新的隨機密鑰。
祕密用於解析和匹配會話cookie。如果您在重新啓動後更改它,則會使先前的會話無效,因爲Cookie不會以新密碼生效。
儘管如此,如果餅乾被盜,您可能會考慮更改祕密,哪種保護您。將祕密存儲在需要它的地方以外的地方並不是一個好習慣。與任何祕密和鹽類一樣,因爲訪問它們不利於您的安全。