我应该为express.cookieParser()秘密使用什么?

时间:2013-07-04 09:30:56

标签: node.js security cookies express

文档说它应该是秘密的,但我的代码发布在github上。

服务器重新启动时app.use(express.cookieParser(crypto.randomBytes(64).toString()))会工作,还是秘密应该是一样的?我应该把秘密存储在磁盘上吗?它需要有多秘密?

3 个答案:

答案 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被盗,你可能会考虑改变秘密,这会保护你。将秘密存储在需要的地方的任何地方都不是好的做法。与任何秘密和盐相同,因为访问它们不利于您的安全。