关注JWT安全性

时间:2016-10-17 04:29:42

标签: node.js authentication passport.js jwt

最近,我使用passport和node.js实现了JWT策略......但是,我开始担心这个概念。难道一旦有人访问JWT,它可以用来检索受保护的数据吗?并且没有像使用chrome dev工具一样轻松访问JWT吗?

我可以尝试减少到​​期日期,但是......如果只要用户的详细信息相同,生成的令牌每次都会相同,那么这不是真的吗?那么到期日的重点是什么,如果你最终会以同样的方式结束呢?我相信我在某处错过了这一点。指导将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

  

一旦有人访问JWT,它是否可以用来检索受保护的数据?并且没有像使用chrome dev工具一样轻松访问JWT吗?

一般来说,如果用户可以访问他们自己的 JWT,那么它应该不是问题 - 因为他们是被允许并且应该有权访问该令牌的人。 (这是Dev Tools允许您访问的内容,但不是其他人的令牌。)

当其他人可以访问该用户的JWT时会出现问题,例如使用SSL / HTTPS之类的东西显示其价值(例如,加密会阻止其他用户嗅探流量并检索JWT)。这是一个相当广泛的主题,尝试和覆盖,但最终如果其他人可以访问一些随机用户的JWT然后有安全问题,是的。它并不是严格相关的,但我喜欢this Auth0 article,它谈到了JWT和cookie之间的差异(你可能已经理解 - 因此它可能有用/有趣)以及一些相关的安全问题以及JWT如何适应到图片。

  

我可以尝试减少到​​期日期,但是......如果只要用户的详细信息相同,生成的令牌每次都会相同,那么这不是真的吗?那么到期日的重点是什么,如果你最终会以同样的方式结束呢?

令牌的到期时间存储在令牌的正文中(在exp键下),因此只要生成具有不同到期时间的新令牌,令牌的值就会发生变化。 RFC7519声明the "exp" (expiration time) claim identifies the expiration time on or after which the JWT MUST NOT be accepted for processing. The processing of the "exp" claim requires that the current date/time MUST be before the expiration date/time listed in the "exp" claim.,因此如果您使用的库在这方面正常运行,那么过去具有exp值的令牌将无法正确验证,因此令牌无法使用。 / p>