По умолчанию MVC DenyGet
защищает вас от очень специфической атаки, включающей запросы JSON, для повышения вероятности того, что последствия разрешения HTTP GET
подверженности рассматриваются заранее, прежде чем они могут произойти.
Это противоположно тому, когда это может быть слишком поздно.
Примечание. Если ваш метод действия не возвращает конфиденциальные данные, тогда следует разрешить получение.
Дальнейшее чтение из моей книги по Wrox ASP.NET MVC3
По умолчанию среда ASP.NET MVC не позволяет отвечать на запрос HTTP GET с полезной нагрузкой JSON. Если вам нужно отправить JSON в ответ на GET, вам нужно явно разрешить поведение, используя JsonRequestBehavior.AllowGet в качестве второго параметра метода Json. Однако есть вероятность, что злоумышленник может получить доступ к полезной нагрузке JSON с помощью процесса, известного как JSON Hijacking. Вы не хотите возвращать конфиденциальную информацию, используя JSON в GET-запросе. Для получения дополнительной информации см. Сообщение Фила по адресу
http://haacked.com/archive/2009/06/24/json-hijacking.aspx/ или это ТАК.
Хаак, Фил (2011). Профессиональный ASP.NET MVC 3 (программист Wrox для программиста) (Kindle Locations 6014-6020). Wrox. Kindle Edition.
Связанный вопрос StackOverflow
В большинстве последних браузеров (начиная с Firefox 21, Chrome 27 или IE 10) эта уязвимость больше не существует.