gpt4 book ai didi

node.js - 我应该多么担心向 XSS 漏洞开放 JWT?

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

我正在构建一个 node.js web 应用程序,对 GUI 和 graphQL 使用react,与 Apollo 一起提供后端连接到 AWS 上的 RDS (MySQL) 实例。

我正在对用户进行身份验证,然后返回 JWT。我已经弄清楚如何更新/过期 token ,但现在我面临的问题是当用户访问该站点时将它保存在客户端的哪里......

有两个主要概念,第三个是混合模型。 1) 使用 JavaScript 将其存储为 localStorage,如 HowToGraphQL 所述2) 将其存储在 Cookie 中,并将 http-only 设置为 true,如上述文章中所述作为阳 ionic reference to Randall Degges

There is another alternative to store it in memory only on the client side but then a user would have to login every time the page is refreshed as it would not be persistent anywhere.



只有当存在另一个 XSS 漏洞已经被利用时,概念 1 才容易受到 XSS 攻击。但它仅对站点是安全的,因此只有在站点上运行的脚本才能访问它,而不能访问任何站点上的脚本。有很多安全讨论认为它不应该以这种方式存储,即使这是常见的方式,因为开发人员不能信任他们在其站点上运行的每个 JavaScript 脚本,并且可能有一个读取 localStorage 然后将其发送到异地.

概念 2 通过声明 http-only 使其只能被您站点上的服务器访问,从而消除了易受 XSS 攻击的漏洞。这里的问题在于,必须创建一个单独的方法来将相同的后端身份验证用于其他用途,例如标准 API(用于 native 应用程序或其他站点),其中 JWT 通过 https 发送到 header 中安全地在另一台服务器上。

所以我研究并发现了这个 hybrid method described by Ben Awad 3) 使用请求 token 和刷新 token 。然后,请求 token 可以正常用于标准 API,但在我们的 React 应用程序站点上,我们也可以仅将其存储在内存中,并将刷新 token 存储在 cookie 中,以便在用户刷新或关闭并重新打开浏览器时发回请求 token 。

所以理论上,最好的解决方案是概念 3,它解决了所有问题,但设置起来当然更复杂。

我的问题:我应该如何担心向 XSS 漏洞开放 JWT?当我有更多时间时,我会在很长一段时间内完成这项工作,但我正在争取一个截止日期。我的网站将鲜为人知,而不是像 Facebook 或 Sales-Force 这样的黑客必然瞄准的网站。我的站点不存储信用卡数据或除基本 CRM 和任务列表之外的其他高度敏感数据。如果我的网站通过其他代码对 XSS 开放,那么在不知道 JWT 的情况下,整个身份验证过程不会通过键盘记录脚本或类似的东西受到攻击。我觉得我会做很多额外的工作来防止可能的威胁,如果发生,整个系统就会受到损害。

最佳答案

如果您认为您的网站不能在 Internet Explorer 和一些旧版本的主要浏览器上运行,您可以利用名为 Same-Site 的新 cookie 属性(更准确地说,该网站可以运行,但 cookie 将不安全)。

通过将 cookie 定义为 HttpOnly,您可以立即免受 XSS 攻击,但您也容易受到 CSRF 攻击。

现在通过将 cookie 定义为具有属性 Same-Site=Strict,cookie 将仅通过 Http 调用发送,并且仅当域与您站点的域匹配时。因此,例如,如果有人在另一个站点中创建一个表单并尝试向您自己的站点执行发布请求,则永远不会发送 cookie。

如果您希望 cookie 仅在 GET 请求上传递,您可以将 Same-Site 属性设置为 Lax,但正如您所提到的。

您可以在 SameSite cookie 部分下的以下链接中找到有关此功能的更多信息:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies

您还应该使用以下链接检查该功能的浏览器兼容性:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#Browser_compatibility

关于node.js - 我应该多么担心向 XSS 漏洞开放 JWT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60540104/

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