jquery – 如何保护我的JsonResult GET调用?

前端之家收集整理的这篇文章主要介绍了jquery – 如何保护我的JsonResult GET调用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我知道如何使用MVC的AntiForgeryToken属性以及它的关联HTML帮助程序来帮助XSRF保护我的应用程序的表单POST.

可以为实现GET的JsonResults做类似的事情吗?

例如,我的View包含一个onSubmit jQuery调用,如下所示:

$.getJSON("/allowActivity/YesOrNo/" + someFormValue,"{}",function(data) {
  if(data.Allow) {
    //Do something.
  }
});

我想确定这个JsonResult只能从目标页面调用.

编辑:

我找到了一个类似的问题this post,没有具体的答案.

确保我的GET(非破坏性)URL仅由我自己的页面中的AJAX调用消耗的最简单方法是什么?

最佳答案
您可以将AntiForgeryToken与一些自定义逻辑结合使用.在服务器上创建AntiForgery令牌是相同的,但默认情况下,该值不包含在您的XmlHttpRequest中.

此令牌的值位于仅HTTP的cookie“__RequestVerificationToken”中,并且还应该以发布到服务器的表单数据的形式出现.因此,在XmlHttpRequest中包含一个键/值对,并在控制器上使用ValidateAntiForgeryToken – 属性

编辑:

今天我尝试自己使用AntiForgeryToken进行Ajax请求,它运行正常.只需使用以下javascript:

$.post('my_url',$.getAntiForgeryTokenString(),function() { ... });

$.getAntiForgeryTokenString = function() {
    return $(document.getElementsByName("__RequestVerificationToken")).fieldSerialize();
};

在服务器端,您不必更改代码 – 只需使用ValidateAntiForgeryToken-属性即可.

希望这可以帮助

猜你在找的jQuery相关文章