Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 安全MVC Web API控制器_Javascript_Jquery_Asp.net Mvc_Api_Asp.net Mvc 5 - Fatal编程技术网

Javascript 安全MVC Web API控制器

Javascript 安全MVC Web API控制器,javascript,jquery,asp.net-mvc,api,asp.net-mvc-5,Javascript,Jquery,Asp.net Mvc,Api,Asp.net Mvc 5,如果我的MVC应用程序中有一个Web API控制器,并且我正在通过jQuery$ajax调用一个GET请求,那么如何验证该调用以确保它来自我的应用程序 这是我需要检查IP的地方吗?我可以用防伪代币吗 我基本上希望API控制器只允许来自我的应用程序的请求,而不允许来自仅仅知道端点的其他人的请求。我不希望人们能够复制API调用。您可以使用CORS来限制来自其他来源的调用。除了CORS,您还应该使用身份验证保护api(以防止未经身份验证的访问) 要禁用来自不同来源的请求,可以在下面的web api(w

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

这是我需要检查IP的地方吗?我可以用防伪代币吗


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

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

要禁用来自不同来源的请求,可以在下面的web api(web api 2)示例中使用[DisableCors]属性。默认情况下,COR处于禁用状态。如果在较高级别(ex-controller)启用此属性,并且希望在较低级别(ex-action)限制,则应使用此属性

要从启用对此控制器的访问,请执行以下操作:


你读过“同一原产地政策”吗?我读过一点。听起来我想使用的是antiforgerytoken,但我不太明白为什么其他人不能直接复制可能希望使用JWT或其他基于token的验证系统的内容。另请参见执行[禁用CORS]和使用防伪令牌之间的区别?CORS和防伪是不同的概念。CORS限制可以访问api的域。防伪令牌由服务器生成,通过cookie和隐藏字段发送到客户端,以验证表单post是否来自可信来源。根据应用程序的体系结构,防伪就足够了吗。如果您使用的是基于MVC的应用程序,其中响应是带有表单的html页面,那么防伪非常有用。如果您使用web api,则防伪功能不可用。另外,若您希望api接受来自一组域(或不同域)的请求,那个么使用CORS来限制域。
[DisableCors]
public class UsersController : ApiController
{
    public HttpResponseMessage GetUser(int id) { ... }
}
[EnableCors(origins: "http://www.contoso.com", headers: "*", methods: "*")]    
public class UsersController : ApiController
{
   public HttpResponseMessage GetUser(int id) { ... }
}