-1

我正在开发一个分布式高可用性单页应用程序,该应用程序由 docker 节点集群提供服务。有时一个节点会死掉(出于完全正当的原因,所以这不是问题)。然后,所有客户端都会无缝地重新路由到其他节点之一。不幸的是,它们的所有 XSRF 令牌都无效,因为它们存储在客户端的内存中。

因此,问题是,我们如何在基于 *nix 的设置中分配当前 XSRF 令牌的存储?

4

1 回答 1

1

总结一下我的评论:

XSRF/CSRF 仅在您使用 Cookie 进行身份验证时才有可能。它允许攻击者将用户引诱到一个虚假页面,该页面将一个(通常是隐藏的)表单重定向到您的网站,其中包含攻击者填充的数据或通过调用图像标签中的脚本(如果获取请求有副作用,应该避免),即

<image src="http://yourdomain.com/user/5/delete"/>

当您使用 SPA(单页应用程序,用 JavaScript 编写的应用程序,它们仅由初始请求加载并且所有其他调用通过 Ajax/JavaScript 发生)时,您通常会使用访问令牌(不透明令牌或 jwt 令牌)进行身份验证。

仅当您使用 cookie 身份验证时,为每个请求发送令牌不会受到 XSRF 的攻击。ASP.NET Core 文档明确指出:

https://docs.microsoft.com/en-us/aspnet/core/security/anti-request-forgery

一些攻击针对响应 GET 请求的站点端点,在这种情况下,可以使用图像标记来执行操作(这种形式的攻击在允许图像但阻止 JavaScript 的论坛站点上很常见)。使用 GET 请求更改状态的应用程序容易受到恶意攻击。

CSRF 攻击可能会针对使用 cookie 进行身份验证的网站,因为浏览器会将所有相关 cookie 发送到目标网站。但是,CSRF 攻击不仅限于利用 cookie。例如,Basic 和 Digest 身份验证也容易受到攻击。用户使用 Basic 或 Digest 身份验证登录后,浏览器会自动发送凭据,直到会话结束。

于 2018-01-26T13:39:20.497 回答