Зачем Json Request Behavior
нужен?
Если я хочу ограничить HttpGet
запросы к своему действию, я могу украсить действие [HttpPost]
атрибутом
Пример:
[HttpPost]
public JsonResult Foo()
{
return Json("Secrets");
}
// Instead of:
public JsonResult Foo()
{
return Json("Secrets", JsonRequestBehavior.AllowGet);
}
Почему не [HttpPost]
достаточно?
Почему рамки "наседают" на нас JsonRequestBehavior.AllowGet
за все, JsonResult
что у нас есть. Если я хочу отказать в получении запросов, я добавлю HttpPost
атрибут.
c#
.net
asp.net-mvc
asp.net-mvc-3
security
Гдорон поддерживает Монику
источник
источник
Ответы:
По умолчанию MVC
DenyGet
защищает вас от очень специфической атаки, включающей запросы JSON, для повышения вероятности того, что последствия разрешенияHTTP GET
подверженности рассматриваются заранее, прежде чем они могут произойти.Это противоположно тому, когда это может быть слишком поздно.
Примечание. Если ваш метод действия не возвращает конфиденциальные данные, тогда следует разрешить получение.
Дальнейшее чтение из моей книги по Wrox ASP.NET MVC3
Связанный вопрос StackOverflow
В большинстве последних браузеров (начиная с Firefox 21, Chrome 27 или IE 10) эта уязвимость больше не существует.
источник
JsonRequestBehavior.AllowGet
за каждого JsonResult, который у меня есть. Если я хочу отказать в получении запроса, я добавлюHttpPost
атрибут.Чтобы вам было проще, вы также можете создать actionfilterattribute
и использовать его в своих действиях
источник
По умолчанию Jsonresult "Запретить получить"
Предположим, если у нас есть метод, как показано ниже
По умолчанию это «Запретить получение».
В методе ниже
Когда вам нужно разрешить или использовать get, мы должны использовать JsonRequestBehavior.AllowGet.
источник
Немного улучшив ответ @Arjen de Mooij, сделав AllowJsonGetAttribute применимым к mvc-контроллерам (а не только к отдельным методам действий):
источник
Тебе это не нужно.
Если у вашего действия есть
HttpPost
атрибут, вам не нужно беспокоиться об установкеJsonRequestBehavior
и использовать перегрузку без него. Существует перегрузка для каждого метода безJsonRequestBehavior
перечисления. Они здесь:Без JsonRequestBehavior
С помощью JsonRequestBehavior
источник