【问题标题】:Allow cross site post request on specific ASP.NET Core controller允许特定 ASP.NET Core 控制器上的跨站点发布请求
【发布时间】:2017-02-14 09:47:17
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-05-20
        • 2011-10-08
        • 2019-11-25
        • 2014-06-27
        • 2019-09-21
        • 2019-04-09
        • 2017-03-07
        • 1970-01-01
        • 2011-01-03
        相关资源
        最近更新 更多