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

时间:2014-07-04 11:58:57

标签: security asp.net-web-api csrf-protection

我将ASP.NET Web API 2服务作为RESTful API来支持移动应用程序。

问题是网络上有关CSRF的所有文章,包括:

所有人都谈论基于cookie的反CSRF验证。

我需要在我的移动应用程序中放置这样一个cookie,不仅如此,它必须预先加载才能使应用程序立即运行。有没有办法在不设置cookie的情况下放入这种反CSRF安全方法?或者是否有可能在移动应用程序中预加载安全cookie,以便我们可以立即使用它而无需设置cookie?

1 个答案:

答案 0 :(得分:1)

答案:You shouldn't need to

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

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

请注意,根据Jaxidian's comment,上面假设使用cookie作为会话管理机制而不是面向HTTP的机制(例如基本身份验证,NTLM或Kerberos)。