分布式SPA应用程序中的防伪令牌

时间:2018-01-24 07:30:22

标签: c# asp.net-core csrf x-xsrf-token

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

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

1 个答案:

答案 0 :(得分:0)

总结我的评论:

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

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

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

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

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

  

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

     

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