2012-03-05 71 views
1

如何防止MVC JSON劫持?如何防止JSON劫持MVC的

[PreventHijack] 
public JsonResult Check(int id) 
{ 
    return Json(id, JsonRequestBehavior.AllowGet); 
} 

的JavaScript

$.ajax({ 
    url: "/Controller/Check?id=1", 
    type: "post", 
    success: function(data) { 
    } 
}) 

我不希望任何人通过地址栏浏览此jsonresult。 可以在这里使用antiforgerytoken吗?

+0

不知道是否有什么出这样的盒子。看到这个http://haacked.com/archive/2009/06/25/json-hijacking.aspx – gideon 2012-03-05 06:24:30

回答

1

你被明确允许用户浏览到该网址与JsonRequestBehavior.AllowGet。如果你把说出来,.NET将在命中那个URL抛出一个错误:​​

+0

感谢sweaver2112,实际jsonresult方法的功能是更新数据库,当用户点击一个复选框,真的还是假的,这就是为什么我不希望任何人用地址栏浏览该方法。有没有其他方法可以实现这一目标? – valrecx 2012-03-05 06:38:36

+0

是的,这是一个安全功能,以防止这种恶作剧。如果你把allowGet取出来,并且让表单帖子的按钮部分(就像你一样),你应该没问题。 – sweaver2112 2012-03-05 06:41:08