2016-05-16 87 views
2

如何防止对我的公共WCF soap服务的任何可能的CSRF攻击?阻止对WCF服务的CSRF攻击

我知道主要的解决方案是通过使用CSRF令牌,但我怎么能实现呢?

希望有人给我的想法,或者至少告诉我,WCF不能被CSRF攻击。

+0

WCF服务在浏览器中无法使用。因此,这种攻击没有发生。 –

+1

@TomRedfern:不是这样的:https://msdn.microsoft.com/en-us/library/bb924552(v=vs.110).aspx – SilverlightFox

+0

@SilverlightFox - 我似乎会纠正! –

回答

3

是的,CSRF适用于WCF,如果您有enabled AJAX support for your service

缓解的一种快速而简单的方法是设置检查自定义标题,如X-Requested-With请求标题。如果未启用CORS,则这些标题无法传递到跨域。

为了进一步加强此解决方案,您还可以设置每个会话的令牌,然后将其传递到头中。见this answer。这将减轻浏览器插件(如Flash和Silverlight)中的漏洞,前者之前曾遭受过允许跨域设置任意头部的错误,否则应该不允许该错误。

+0

谢谢,但是如果我不使用AspNetCompatibility模式,并且我不需要会话,我该如何应用每个会话的令牌? –

+0

请问您能否通过您的应用程序和体系结构的更多细节更新您的问题?例如什么是你的服务的客户端,因为非web浏览器不需要CSRF保护,并且如果不使用会话,那么为什么你需要CSRF保护? – SilverlightFox

+0

实际上,我的服务的想法是公开分隔的服务,请求跨越不同的域,所以每个应用程序都会要求通过Soap Header可能发送的用户名和密码连接到此服务。所以没有会议在这里适用。 –