gpt4 book ai didi

security - 在浏览器中存储 JWT 的位置?如何防范CSRF?

转载 作者:行者123 更新时间:2023-12-03 04:24:52 39 4
gpt4 key购买 nike

我知道基于 cookie 的身份验证。 SSL 和 HttpOnly 标志可用于保护基于 cookie 的身份验证免受 MITM 和 XSS。但是,需要采取更多特殊措施来保护它免受 CSRF 的影响。它们只是有点复杂。 ( reference )
最近,我发现 JSON Web Token (JWT) 作为身份验证的解决方案非常热门。我了解有关编码、解码和验证 JWT 的知识。但是,我不明白为什么有些网站/教程说如果使用 JWT 就不需要 CSRF 保护。我已经阅读了很多,并试图总结下面的问题。我只是希望有人提供 JWT 的大图,并澄清我对 JWT 的误解。

  • 如果 JWT 存储在 cookie 中,我认为它与基于 cookie 的身份验证相同,只是服务器不需要 session 来验证 cookie/token。如果不采取特殊措施,仍然存在CSRF的风险。 JWT 不是存储在 cookie 中的吗?
  • 如果 JWT 存储在 localStorage/sessionStorage 中,则不涉及 cookie,因此不需要针对 CRSF 进行保护。问题是如何将 JWT 发送到服务器。我找到了 here建议使用 jQuery 通过 ajax 请求的 HTTP header 发送 JWT。那么,只有ajax请求可以做认证吗?
  • 另外,我又找到了一个 blog指向使用“Authorization header”和“Bearer”发送JWT。我不明白博客谈论的方法。有人可以解释更多关于“授权 header ”和“承载”的信息吗?这是否使 JWT 由所有请求的 HTTP header 传输?如果是,那么CSRF呢?
  • 最佳答案

    JWT token 很受欢迎,因为它们被用作新的授权和身份验证协议(protocol)(如 OAuth 2.0)中的默认 token 格式。和 OpenID Connect .
    当 token 存储在 cookie 中时,浏览器会自动将它与每个请求一起发送到同一个域,这仍然容易受到 CSRF 攻击。
    承载认证是authentication schemes之一在 HTTP 中定义。这基本上意味着 将 (JWT) token 粘贴到请求的 Authorization HTTP header 中。浏览器会不是 自动为您执行此操作,因此不适合保护您的网站。由于浏览器不会自动将 header 添加到您的请求中,因此它不容易受到 CSRF 攻击,这取决于您的身份验证信息是否自动提交到原始域。
    承载方案通常用于保护通过 AJAX 调用或移动客户端使用的 Web API(REST 服务)。

    关于security - 在浏览器中存储 JWT 的位置?如何防范CSRF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27067251/

    39 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com