饼干与JWT有何不同?为什么它们被认为比JWT更差?

时间:2015-07-29 02:47:03

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

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

除了上述内容之外,很少有人会想到这些问题 -

  1. JWT代币在中间攻击中不容易受到人类攻击吗?如果某人窃取了一个令牌(在未加密的频道上),他们不能作为原始用户? (除非我们在声明中添加用户的IP等)

  2. 我已经读过一些关于cookie不适合新时代移动应用程序和令牌的咆哮。为什么呢?

  3. 为什么令牌被认为比Cookie更安全?是什么让他们对攻击更加无懈可击?

  4. 令牌只需要由服务器发出,还是可以从其他OAuth提供商处接收令牌并自定义(添加/删除声明)并重复使用?

  5. 性能明智,Cookie不好'由于它们具有大小限制,因此它们只是将会话ID(通常)与会话数据存储在服务器中。这减少了cookie的大小。但是JWT,需要发送整个令牌,因此如果令牌包含会话数据作为声明,那么我们每次都会发送这个不断增加的令牌。如果我说得对,那么JWT与Cookie相比表现不好吗?

  6. 由于

1 个答案:

答案 0 :(得分:4)

  

JWT代币在中间攻击中不容易受到人类攻击吗?

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

  

我已经阅读了一些关于cookie不适合新时代移动应用程序和令牌的答案。为什么呢?

大多数移动应用都不使用浏览器发出HTTP请求。浏览器使Web开发人员可以无缝地处理cookie。对于移动开发人员来说,使用JWT比使用cookie更简单。

  

为什么令牌被认为比Cookie更安全?是什么让他们对攻击更加无懈可击?

令牌不一定比cookie更安全(cookie可以签名,就像JWT一样)。安全性的好处来自于不会暴露于利用浏览器无意中使用cookie的攻击(CSRF攻击)。

  

令牌是否只需要由服务器发出,或者是否可以从其他OAuth提供商处接收令牌并自定义(添加/删除声明)并重复使用?

JWT签署了一个秘密,只有生成它的服务器/组织才能知道。因此,只有知道秘密的服务器才能验证令牌是否有效。虽然生成令牌的服务器不必与验证令牌的服务器相同,但是您自定义并重新使用其他人的令牌是没有意义的。

Reference