我知道如何使用 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 token 的过程是相同的,但默认情况下该值不包含在您的 XmlHttpRequest 中。
此 token 的值位于仅 HTTP 的 cookie“__RequestVerificationToken”中,并且也应该位于发布到服务器的表单数据中。因此,请在 XmlHttpRequest 中包含键/值对,并在 Controller 上使用 ValidateAntiForgeryToken - 属性
编辑:
今天我尝试使用 AntiForgeryToken 来处理 Ajax 请求,效果很好。只需使用以下 JavaScript:
$.post('my_url', $.getAntiForgeryTokenString(), function() { ... });
$.getAntiForgeryTokenString = function() {
return $(document.getElementsByName("__RequestVerificationToken")).fieldSerialize();
};
在服务器端,您不必更改代码 - 只需使用 ValidateAntiForgeryToken- 属性进行操作即可。
希望这有帮助
关于jquery - 如何保护我的 JsonResult GET 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/554650/