允许特定ASP.NET Core控制器上的跨站点发布请求

时间:2016-10-05 19:54:40

标签: c# asp.net asp.net-web-api csrf antiforgerytoken

我正在为我的新ASP.NET Core应用程序使用复杂的模板。现在我想创建一个新控制器,它从另一个外部服务器接收POST请求。那不行。我尝试了很多,直到我发现有一种机制设置只允许POST请求访问我的控制器,该控制器有一个特定的头(X-XSRF-TOKEN)。这样做是为了防止跨站点请求伪造攻击。

但是,一个特定的控制器应允许此类请求,因为该控制器未在网页访问者浏览器中使用。有没有办法注释控制器或任何其他方式来允许此异常?

2 个答案:

答案 0 :(得分:1)

我终于找到了答案,确实可以使用注释。只需使用 [IgnoreAntiforgeryTokenAttribute] 注释您的控制器或操作,整个XSRF机制将不再打扰您的控制器。

答案 1 :(得分:1)

请注意,即使您不打算在浏览器中使用该控制器操作,如果可以通过http访问它,也可能很容易受到CSRF的影响。例如,攻击者可能仍会创建一个流氓网页,如果您的某个用户访问该网页,则会让用户向该操作发送请求。如果会话管理是基于cookie或等效的,则操作会更改服务器状态,它仍然是一个可利用的漏洞。

因此,虽然您可以转换CSRF保护,但您需要仔细考虑后果。