安全的MVC Web API控制器

时间:2016-12-11 17:59:33

标签: javascript jquery asp.net-mvc api asp.net-mvc-5

如果我的MVC应用程序中有一个Web API Controller,并且我通过jQuery $ ajax向它调用GET请求,那么如何验证该调用以确保它来自我的应用程序?

我需要检查它来自哪个IP吗?我可以使用AntiForgeryToken吗?

我基本上希望API控制器只允许来自我的应用程序的请求,而不是来自只知道端点的其他人的请求。我不希望人们能够复制API调用。

1 个答案:

答案 0 :(得分:2)

您可以使用CORS限制来自其他来源的来电。与CORS一起,您还应该使用身份验证来保护api(以防止未经身份验证的访问)。

要禁用来自其他来源的请求,您可以在web api(web api 2)上使用[DisableCors]属性。默认情况下,CORS被禁用。如果在更高级别(前控制器)启用并且您希望限制在较低级别(例如),则应使用此属性

[DisableCors]
public class UsersController : ApiController
{
    public HttpResponseMessage GetUser(int id) { ... }
}

http://contoso.com

启用对此控制器的访问权限
[EnableCors(origins: "http://www.contoso.com", headers: "*", methods: "*")]    
public class UsersController : ApiController
{
   public HttpResponseMessage GetUser(int id) { ... }
}