在Cookie中存储OAuth令牌是不是很糟糕?

Try*_*987 9 html cookies web-applications oauth oauth2

在Cookie中存储OAuth 2令牌是不是很糟糕?如果是这样,什么是Web应用程序的替代品?

dvs*_*gec 11

是否可以在cookie中存储access_token取决于以下内容:

  1. 是否加密存储在cookie中的access_token(肯定应该是)
  2. Access_token是一个承载令牌,因此它不依赖于浏览器流.Cookie通常用于维护浏览器中的状态.因此,如果令牌的生命周期与cookie相同,则继续,否则不行.当我说生命周期时,我指的是生命周期等.
  3. 此外,请考虑这一事实,即访问令牌不是身份令牌
  4. 访问令牌完全是客户端,而服务器通常使用cookie来维护会话,主要是维护匹配的服务器端会话.

我希望这有帮助.


Tig*_*ies 7

我绝对不会这样做。当涉及安全时,您不应该将东西存储在其他人可以访问的地方。所以不要把它存储在任何地方,尤其是客户端。

话虽如此,如果处理得当,这本身并不是坏习惯。见一下全面的文章。

  • 我认为这个答案没有意义。会话不可避免地需要在客户端上存储一些东西,这是没有办法解决的。我们只需要决定存储“什么”以及“如何”存储它。提出的问题是:access_tokens 是否可以存储在会话 cookie 中,还是应该存储其他内容? (9认同)
  • @TigOldBitties你说将会话标识符存储在cookie中。这就是在客户端上存储一些东西——正如我所说,这是不可避免的。问题是要存储“什么”以及它必须有什么保证?如果有人窃听会话标识符,他们会从中得到什么?如果有人窃听访问令牌,他们会从中获得更多还是更少?如果答案是“我不知道,但我的经验法则是只在客户端上存储会话标识符”,那么这不是问题的答案。如果答案是“由于 XYZ,访问令牌比 sessionID 弱”,那么这就是真正的答案 (7认同)
  • 这完全取决于它的处理方式,如果用户离开计算机并且没有关闭浏览器,其他人可以使用令牌吗?我无法回答,因为我不知道你用它做什么。要说的东西太多了,所有这些都在文章或其他资源中进行了解释,比我以往任何时候都好,因此如果您的方法有任何缺陷,您必须得出自己的结论。 (3认同)
  • 将它存储在会话 cookie 下似乎是一个好方法。对这种方法有异议吗? (2认同)

Dmi*_*nko 5

Cookie 的最大大小为 4kb。因此,如果您在令牌中保存大量信息 - 您将会收到错误。