O MVC padroniza para DenyGet
protegê-lo contra um ataque muito específico envolvendo solicitações JSON para melhorar a probabilidade de que as implicações de permitir a HTTP GET
exposição sejam consideradas antes de permitir que elas ocorram.
Isso é contra depois, quando pode ser tarde demais.
Nota: Se o seu método de ação não retornar dados confidenciais, deve ser seguro permitir o recebimento.
Outras leituras do meu livro Wrox ASP.NET MVC3
Por padrão, a estrutura do ASP.NET MVC não permite que você responda a uma solicitação HTTP GET com uma carga JSON. Se você precisar enviar JSON em resposta a um GET, precisará explicitamente permitir o comportamento usando JsonRequestBehavior.AllowGet como o segundo parâmetro para o método Json. No entanto, existe a chance de um usuário mal-intencionado obter acesso à carga útil do JSON por meio de um processo conhecido como JSON Hijacking. Você não deseja retornar informações confidenciais usando JSON em uma solicitação GET. Para obter mais detalhes, consulte a publicação de Phil em
http://haacked.com/archive/2009/06/24/json-hijacking.aspx/ ou esta publicação da SO.
Haack, Phil (2011). Profissional ASP.NET MVC 3 (programador Wrox para programador) (locais Kindle 6014-6020). Wrox. Edição Kindle.
Pergunta relacionada ao StackOverflow
Na maioria dos navegadores recentes (a partir do Firefox 21, Chrome 27 ou IE 10), isso não é mais uma vulnerabilidade.