如果我们已经有[HttpPost],为什么需要使用JsonRequestBehavior?
问题描述:
在ASP.NET MVC中,我们可以选择使用HTTPGET
/HTTPPost
来保护我们的控制器的行为。 而对于Json请求,还有一个选项JsonRequestBehavior
用于安全性。如果我们已经有[HttpPost],为什么需要使用JsonRequestBehavior?
凡JsonRequestBehavior有两个选择:
public enum JsonRequestBehavior
{
AllowGet = 0,
DenyGet = 1,
}
我的问题仅仅是,为什么有JsonRequestBehavior.DenyGet
,如果我们可以用HttpPost
间隙?
答
DenyGet是MVC设置的默认设置,用于保护您免受使用HTTP GET返回数据的特定JSON请求攻击。
您需要手动决定添加AllowGet,这会强制您考虑通过HTTP GET方法公开的数据。
有关详细说明,你可以阅读(有些过时)职位:http://haacked.com/archive/2009/06/25/json-hijacking.aspx/
没有必要在POST方法来指定'JsonRequestBehavior'(它总是允许)。但默认情况下,'JsonRequestBehavior'在GET方法中设置为'DenyGet',所以在GET方法中,您必须显式使用'JsonRequestBehavior.AllowGet' –