【问题标题】:How are cookies different from JWT and why are they considered worse than JWT?cookie 与 JWT 有何不同,为什么它们被认为比 JWT 差?
【发布时间】:2015-10-19 20:13:06
【问题描述】:

我一直在阅读使用令牌进行身份验证。但是,我无法理解令牌 (JWT) 与 cookie 有何不同。两者都将存储用户信息(作为令牌中的声明),定义持久性并将随每个客户端请求发送到服务器。

除了上述之外,我想到的几个问题 -

  1. JWT 令牌是否不容易受到中间人攻击?如果有人窃取了令牌(在未加密的频道上),他们不能冒充原始用户吗? (除非我们在声明中添加用户的 IP 等)

  2. 我读过一些关于 cookie 不适合新时代移动应用程序的咆哮,而令牌就是答案。为什么?

  3. 为什么认为令牌比 cookie 更安全?是什么让他们更不容易受到攻击?

  4. 令牌是否只需要由服务器颁发,还是可以从另一个 OAuth 提供者接收令牌并自定义(添加/删除声明)并重用它?

  5. 在性能方面,cookie 是“糟糕的”,因为它们有大小限制,这就是为什么它们只将会话 ID(通常)与会话数据一起存储在服务器中。这会减少 cookie 的大小。但是 JWT,需要发送整个令牌,所以如果令牌包含会话数据作为声明,那么我们基本上每次都会发送这个不断增加的令牌。如果我猜对了,那么与 Cookie 相比,JWT 的性能不是很差吗?

谢谢

【问题讨论】:

  • 第一个问题是将苹果与橙子进行比较。 Cookie 只是一种存储和传输机制。令牌可以存储在 cookie 中。

标签: authentication cookies session-cookies access-token jwt


【解决方案1】:

JWT 代币是否不容易受到中间人攻击?

是的,您应该使用 HTTPS 来确保没有人可以看到 HTTP 请求标头中的 JWT。如果有人获得令牌,他们可以冒充原始用户。使用 cookie 也可以做到这一点。

我读过一些关于 cookie 不适合新时代移动应用程序的咆哮,而令牌就是答案。为什么?

大多数移动应用程序不使用浏览器发出 HTTP 请求。浏览器使 Web 开发人员可以无缝地处理 w/cookie。对于移动开发者来说,使用 JWT 比使用 cookie 更方便。

为什么令牌被认为比 cookie 更安全?是什么让它们更不易受到攻击?

令牌不一定比 cookie 更安全(可以对 cookie 进行签名,就像 JWT 一样)。安全优势来自于不会暴露于欺骗浏览器无意中使用 cookie(CSRF 攻击)的漏洞。

令牌是否只需要由服务器颁发,还是可以从另一个 OAuth 提供者接收令牌并自定义(添加/删除声明)并重用它?

JWT 使用只有生成它的服务器/组织应该知道的秘密进行签名。因此,只有知道秘密的服务器才能验证令牌是否有效。虽然生成令牌的服务器不必与验证它的服务器相同,但您自定义和重复使用其他人的令牌是没有意义的。

Reference

【讨论】:

  • 感谢您的回答,这很有帮助。但是,尚未解释原始问题 - “cookie 与 JWT 有何不同”。我已修改列表以将其添加为问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 2022-08-10
  • 2018-08-05
  • 2016-04-10
  • 2018-03-03
  • 2019-10-20
  • 2019-09-16
相关资源
最近更新 更多