【发布时间】:2013-07-02 06:00:53
【问题描述】:
文档说应该保密,但我的代码发布在 github 上。
app.use(express.cookieParser(crypto.randomBytes(64).toString())) 会起作用吗,或者当服务器重新启动时密码是否应该相同?我应该将秘密存储在磁盘上吗?需要保密到什么程度?
【问题讨论】:
标签: node.js security cookies express
文档说应该保密,但我的代码发布在 github 上。
app.use(express.cookieParser(crypto.randomBytes(64).toString())) 会起作用吗,或者当服务器重新启动时密码是否应该相同?我应该将秘密存储在磁盘上吗?需要保密到什么程度?
【问题讨论】:
标签: node.js security cookies express
如果您想在重启后保持会话,它应该是相同的。 该密钥用于验证服务器上的会话数据,以防止 cookie 数据格式错误。 也许您可以将随机数据写入文件并在应用程序启动时从文件中读取秘密,如果文件存在,您就不会创建新的随机密钥。
【讨论】:
Secret 用于解析和匹配会话 cookie。如果您在重新启动后更改它,那么它将使以前的会话无效,因为 cookie 对新密钥无效。
不过,如果 cookie 被盗,您可能会考虑更改秘密,这样可以保护您。将秘密存储在需要的地方以外的任何地方都不是一个好习惯。与任何秘密和盐一样,因为访问它们不利于您的安全。
【讨论】:
要保密,您可以将其设置在环境变量中(例如,称为“COOKIE_SECRET”),然后您可以:
var cookieSecret = process.env.COOKIE_SECRET;
app.use(express.cookieParser( cookieSecret ));
(或者如果您想要更复杂的配置设置,您可能想看看nconf。它统一了环境变量、命令行参数和平面文件的配置)。
【讨论】: