【问题标题】:Http Only cookies vs Session仅 Http cookie 与 Session
【发布时间】:2021-06-25 05:23:10
【问题描述】:

所以我正在实现与使用 OAuth 2 的 API 的集成,该 API 声明:建议使用 httpOnly Cookies 来存储令牌(访问、刷新)。

我已经使用会话很长时间了,我不确定使用 httponly cookie 或会话之间是否有任何区别 有什么优缺点吗?

HttpOnly cookie 提供与会话 cookie 相同的安全性 除了与会话 cookie 相关的额外工作(存储和清除数据) Oauth 2 推荐使用 HttpOnly cookie,但我不知道为什么! 提前致谢

【问题讨论】:

  • 欢迎来到 StackOverflow!请使用tour(并在您使用时获得徽章)/另请阅读我们的How to Ask页面和edit您的问题以改进它。好的问题往往会从社区中得到更快、更好的答案。如现在所述,您的问题不符合社区准则
  • @blurfus 我已经阅读并检查了类似的问题,没有人回答这个问题,我稍微修改了一下以使其更清楚

标签: session cookies oauth


【解决方案1】:

Cookie 和会话用于存储信息。 Cookie 仅存储在客户端计算机上,而会话存储在客户端和服务器上。会话在服务器上的临时目录中创建一个文件,其中存储了已注册的会话变量及其值。

所以... 会话和 cookie 的主要区别在于会话数据存储在服务器上,而 cookie 将数据存储在访问者的浏览器中。会话比 cookie 更安全,因为它存储在服务器中。可以从浏览器关闭 Cookie。

【讨论】:

  • 谢谢,但是我没有看到安全改进?!
  • 还有为什么oauth2会推荐它
  • 在生成 cookie 时使用 HttpOnly 标志有助于降低客户端脚本访问受保护 cookie 的风险(如果浏览器支持)。如果 HttpOnly 标志(可选)包含在 HTTP 响应标头中,则无法通过客户端脚本访问 cookie(同样,如果浏览器支持此标志)。因此,即使存在 XSS 漏洞并且用户意外访问了利用该漏洞的链接,浏览器也不会将 cookie 泄露给第三方。
  • 阅读:安全 PHP 会话的快速通道。有几种方法可以存储会话数据:
  • 在文件中(PHP 的默认行为) 在数据库中(许多框架都这样做) 在 memcached 中(我所做的) 在 cookie 本身中(通常是个坏主意)除非你正在传输会话数据(即您的数据库在另一台服务器上,或者您的 memcached 在多个服务器上运行并且您不确定它是否使用 TLS 在节点之间进行通信),您通常不需要对会话数据做任何事情。自动登录实际上是一个复杂的主题,并且与正常会话不同。我之前写过关于安全“记住我”cookie 的文章。
猜你喜欢
  • 2012-05-07
  • 2012-06-28
  • 2014-08-11
  • 1970-01-01
  • 2011-12-19
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 2010-11-26
相关资源
最近更新 更多