8

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

app.use(express.cookieParser(crypto.randomBytes(64).toString()))起作用,还是在服务器重新启动时密码应该相同?我应该将秘密存储在磁盘上吗?需要保密到什么程度?

4

3 回答 3

8

为了保密,您可以将其设置在环境变量中(例如,称为“COOKIE_SECRET”),然后您可以执行以下操作:

var cookieSecret = process.env.COOKIE_SECRET;

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

(或者,如果您想要更复杂的配置设置,您可能想看看nconf。它统一了跨环境变量、命令行参数和平面文件的配置)。

于 2014-03-25T16:26:39.807 回答
3

如果您想在重新启动后保留会话,它应该是相同的。秘密用于验证服务器上的会话数据,以防止格式错误的 cookie 数据。也许您可以将随机数据写入文件并在应用程序启动时从文件中读取秘密,如果文件存在,您就不会创建新的随机密钥。

于 2013-07-04T09:33:12.277 回答
3

Secret 用于解析和匹配会话 cookie。如果您在重新启动后更改它,那么它将使以前的会话无效,因为 cookie 对新密钥无效。

不过,如果 cookie 被盗,您可能会考虑更改秘密,这样可以保护您。将秘密存储在需要的地方以外的任何地方都不是一个好习惯。与任何秘密和盐一样,因为访问它们不利于您的安全。

于 2013-07-04T09:35:29.280 回答