NodeJS – 在registryvalidation邮件中发送Json Web Token(JWT)是否安全?

我的node.js服务器使用Json Web Token(JWT)和passport.js进行身份validation。 用户注册后,服务器会向用户发送validation邮件,通常应该在validation链接中生成一个令牌以保证安全。 但是因为我的网站是jwt,所以我可以发送jwt作为电子邮件中validation链接的一部分吗?

即validation链接将是http://example.com/verification/some-jwt

所以只要用户得到电子邮件,他也会得到jwt,并且可以存储在浏览器中供将来的validation。

这是一个很好的做法吗?

我不这么认为。 您并不想将电子邮件和浏览器信息混合在一起。

更好的解决scheme可能是通过电子邮件发送一次性令牌链接,该链接将在第一次点击链接时将JWT加载到cookie中。 这将允许您的网站使用JWT设置浏览器cookie。

风险是你的代币可以在长一段时间内得到。

正如Brody所提到的,更好的解决scheme是通过电子邮件发送“一次性令牌”链接。 点击该链接,cookie将被validation,JWT将被退回。

在这里,我们可以将JWT存储在浏览器的本地存储中 – 实际上并不需要cookie。