一尘不染

会话密钥在Express Web框架中的重要性

node.js

我对 会议秘密
的重要性感到困惑。我正在使用Express和Node进行Web开发,此刻,我正在尝试实现简单的登录。以下代码摘自Express中的会话示例。

// Required by session() middleware
// pass the secret for signed cookies
// (required by session())
app.use(express.cookieParser('keyboard cat'));

// Populates req.session
app.use(express.session());

它使用“键盘猫”作为会话机密。我浏览过的有关会话机密的许多内容都建议我将其更改为自定义内容。我现在有3个与此有关的具体问题。

  1. 为什么在使用PHP之前没有见过这个?
  2. 会话机密到底是用来做什么的?
  3. 假设我更改了会话密钥。我的代码是开源的。在这种情况下,将其更改会不会有点多余?我看不到要求用户提供自定义密钥作为选项。
  4. 我正在考虑生成一个随机UUID来填充密钥。这有问题吗?(就安全性而言)

阅读 227

收藏
2020-07-07

共1个答案

一尘不染

我认为其他答案都遗漏了要点,那就是该secret参数是否使会话管理更加安全。在Security.StackExchange这个问题中进行了很好的讨论:为什么直接将会话ID存储在cookie中是不安全的?

我建议您阅读它(不仅有最高的投票答案是相关的)。

尝试总结一下:在 会话ID 为大随机数的情况下,它不会显着减少会话被猜测和被劫持的机会,但是如果 会话ID
是自定义的(例如递增ID),则显然会大有帮助在 ExpressJS中 可能。

用户可以使用他们想要的任何会话ID。也许有人觉得他们应该使用SQL数据库中的自动递增数字,这没关系,因为我们通过对值进行签名,加长密钥来保护他们不知情的决定。

2020-07-07