Why is Json Request Behavior
needed?
如果我想限制HttpGet
对我的动作的请求我可以用[HttpPost]
属性
Example:
[HttpPost]
public JsonResult Foo()
{
return Json("Secrets");
}
// Instead of:
public JsonResult Foo()
{
return Json("Secrets", JsonRequestBehavior.AllowGet);
}
为什么不是[HttpPost]
充足的?
为什么框架会“困扰”我们JsonRequestBehavior.AllowGet
对于每一个JsonResult
我们有。如果我想拒绝获取请求,我会添加HttpPost
属性。
MVC 默认为DenyGet
保护您免受涉及 JSON 请求的非常具体的攻击,以提高允许的影响的可能性HTTP GET
在允许它们发生之前就考虑到暴露。
这与事后可能为时已晚的情况相反。
注意:如果您的操作方法不返回敏感数据,那么允许获取应该是安全的。
进一步阅读我的 Wrox ASP.NET MVC3 书籍
默认情况下,ASP.NET MVC 框架不允许您响应
带有 JSON 负载的 HTTP GET 请求。如果您需要发送 JSON
响应 GET,您需要通过以下方式显式允许该行为
使用 JsonRequestBehavior.AllowGet 作为 Json 的第二个参数
方法。但是,恶意用户有可能获得访问权限
通过称为 JSON 劫持的过程来获取 JSON 负载。你不
想要在 GET 请求中使用 JSON 返回敏感信息。为了
更多详细信息,请参阅 Phil 的帖子:http://haacked.com/archive/2009/06/24/json-hijacking.aspx/ http://haacked.com/archive/2009/06/25/json-hijacking.aspx/ or 这个帖子。 https://stackoverflow.com/questions/16289894/is-json-hijacking-still-an-issue-in-modern-browsers/16880162#16880162
菲尔·哈克(2011)。专业 ASP.NET MVC 3(Wrox 程序员
程序员)(Kindle 位置 6014-6020)。沃克斯。 Kindle版。
相关 StackOverflow 问题
对于大多数最新的浏览器(从 Firefox 21、Chrome 27 或 IE 10 开始),这不再是一个漏洞。 https://stackoverflow.com/questions/16289894/is-json-hijacking-still-an-issue-in-modern-browsers/16880162#16880162
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)