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