【问题标题】:How to protect Web API from CSRF attack if it called from cross domain client?如果 Web API 从跨域客户端调用,如何保护它免受 CSRF 攻击?
【发布时间】:2018-03-25 06:34:49
【问题描述】:

我有一个 Web API,由 Angular 开发的跨域客户端应用程序调用。如何保护我的 Web API 免受 CSRF 攻击。

我正在使用基于令牌的身份验证

我浏览了 Mike Wasson 的以下文章 https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/preventing-cross-site-request-forgery-csrf-attacks

但在上述情况下,客户端和 web api 也在同一个域中运行, 如果它在不同的域中,我们如何传递 AntiForgeryToken?

【问题讨论】:

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


    【解决方案1】:

    如何创建一个端点,当您的应用程序开始获取令牌时您可以查询该端点?然后将它们与来自 Angular 应用程序的每个未来请求一起发送。

    public class AntiForgeryController : ApiController
    {
        [HttpGet]
        public IHttpActionResult Get()
        {
            string cookieToken;
            string formToken;
            AntiForgery.GetTokens(null, out cookieToken, out formToken);
    
            return Ok(new {cookieToken, formToken});
        }
    }
    

    【讨论】:

    • 攻击者也会知道这个调用,然后他可以简单地调用并将这个值与请求一起传递对吗?
    • 当然,这是可能的。您必须使此端点需要某种类型的身份验证。
    猜你喜欢
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多