当前位置:  开发笔记 > 编程语言 > 正文

如何保护我的JsonResult GET调用?

如何解决《如何保护我的JsonResultGET调用?》经验,为你挑选了1个好方法。

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

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

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

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

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

编辑:

我发现这个帖子关于一个类似的问题,没有具体的答案.

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



1> ollifant..:

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

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

编辑:

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

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

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

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

希望这可以帮助

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有