文档说它应该是秘密的,但我的代码发布在github上。
服务器重新启动时app.use(express.cookieParser(crypto.randomBytes(64).toString()))
会工作,还是秘密应该是一样的?我应该把秘密存储在磁盘上吗?它需要有多秘密?
答案 0 :(得分:4)
为了保密你的秘密,你可以在环境变量中设置它(例如' COOKIE_SECRET'然后你可以这样做):
var cookieSecret = process.env.COOKIE_SECRET;
app.use(express.cookieParser( cookieSecret ));
(或者如果您想要更复杂的配置设置,您可能需要查看nconf。它统一了环境变量,命令行参数和平面文件的配置。
答案 1 :(得分:3)
如果要在重新启动后保留会话,它应该是相同的。 该秘密用于验证服务器上的会话数据,以防止格式错误的cookie数据。 也许你可以将随机数据写入文件并在app start上从文件中读取秘密,如果文件存在,则不要创建新的随机密钥。
答案 2 :(得分:3)
Secret用于解析和匹配会话cookie。如果您在重新启动后更改它,那么它将使之前的会话无效,因为cookie对新密码无效。
但是,如果cookie被盗,你可能会考虑改变秘密,这会保护你。将秘密存储在需要的地方的任何地方都不是好的做法。与任何秘密和盐相同,因为访问它们不利于您的安全。