0

我有一个Web API,并通过角度开发的跨域客户端应用程序调用。我如何保护我的Web API免受CSRF攻击。如果从跨域客户端调用CSRF攻击,如何保护Web API?

我使用基于令牌认证

我通过下面的文章就由麦克·沃森 https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/preventing-cross-site-request-forgery-csrf-attacks

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

回答

0

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

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

     return Ok(new {cookieToken, formToken}); 
    } 
} 
+0

攻击者也会知道关于这个调用,然后他可以简单地调用并传递这个值与请求权一起吗? – niknowj

+0

当然,这是可能的。您将不得不使这个端点需要某种类型的身份验证。 – peco