如何防止来自ASP中没有cookie的客户端的CSRF攻击?. NET Web API



我正在制作一个ASP。NET Web API 2服务作为RESTful API来支持移动应用程序。

问题是CSRF网站上的所有文章包括:

  • 防止ASP中的CSRF攻击. NET Web API
  • 使用ASP防止跨站请求伪造. MVC的AntiForgeryToken() Helper防止跨站请求伪造(CSRF)攻击

都在说基于cookie的反csrf验证。

我需要在我的移动应用程序中放置这样一个cookie,不仅如此,它还必须预装,以便应用程序立即工作。有没有一种方法可以在不设置cookie的情况下放入这种反csrf安全方法?或者是否有一种方法可以在移动应用程序中预加载安全cookie,这样我们就可以立即使用它,而无需设置cookie步骤?

答案:不需要。

您需要使用某种身份验证机制(大概)来保护您的Web API,我建议仅通过HTTPS提供您的API。还建议实施HSTS。

只有在客户端共享cookie时才会发生CSRF攻击。我的意思是客户端可以访问来自多个域的cookie(例如web浏览器为您访问的每个站点存储cookie)。然而,一个web应用程序API客户端通常只连接一个域(你的API的域)。任何跨站攻击都不能使用API中的cookie,因为客户端不是共享的(web应用程序中的HTTP客户端与移动浏览器中的HTTP客户端是分开的——或者应该是分开的)。因此,如果您的web应用程序API仅用于您的移动应用程序,那么您的web应用程序API应该已经对CSRF安全。

注意,根据Jaxidian的评论,上面假设cookie被用作会话管理机制,而不是面向HTTP的机制(例如基本认证,NTLM或Kerberos)。

最新更新