【发布时间】:2023-03-21 13:19:01
【问题描述】:
我已经通过以下方式在我的 nodejs 服务器上实现了 CSRF 攻击防护 -
登录时的用户会收到一个 CSRF 令牌和一个 cookie(基于 JWT 的令牌存储在一个 cookie 中)。 CSRF 令牌成为客户端使用$.ajaxSetup 发送的所有未来请求标头的一部分。
每当用户发出请求(GET 或 POST)时,我都会将客户端发送的 cookie 和 csrf 令牌(在标头中)与我服务器上存储的进行比较,应用程序运行正常。
但是,当登录用户打开新标签页或新浏览器窗口时,客户端有 cookie,但其请求标头中没有 CSRF 令牌。所以服务器将此视为 CSRF 攻击并阻止请求!
我的问题是 - 在不影响 CSRF 安全性的情况下,如何在不让用户多次登录的情况下在多个浏览器选项卡和窗口上运行相同的会话?
【问题讨论】:
标签: security cookies http-headers csrf