El valor predeterminado de MVC DenyGet
es protegerlo contra un ataque muy específico que involucra solicitudes JSON para mejorar la probabilidad de que las implicaciones de permitir la HTTP GET
exposición se consideren antes de permitir que ocurran.
Esto se opone a después cuando podría ser demasiado tarde.
Nota: Si su método de acción no devuelve datos confidenciales, entonces debería ser seguro permitir la obtención.
Lectura adicional de mi libro Wrox ASP.NET MVC3
De manera predeterminada, el marco ASP.NET MVC no le permite responder a una solicitud HTTP GET con una carga JSON. Si necesita enviar JSON en respuesta a un GET, deberá permitir explícitamente el comportamiento utilizando JsonRequestBehavior.AllowGet como el segundo parámetro del método Json. Sin embargo, existe la posibilidad de que un usuario malintencionado pueda obtener acceso a la carga útil de JSON a través de un proceso conocido como secuestro de JSON. No desea devolver información confidencial utilizando JSON en una solicitud GET. Para obtener más detalles, consulte la publicación de Phil en
http://haacked.com/archive/2009/06/24/json-hijacking.aspx/ o esta publicación SO.
Haack, Phil (2011). ASP.NET MVC 3 profesional (programador Wrox a programador) (ubicaciones de Kindle 6014-6020). Wrox Versión Kindle.
Pregunta relacionada de StackOverflow
Con la mayoría de los navegadores recientes (comenzando con Firefox 21, Chrome 27 o IE 10), esto ya no es una vulnerabilidad.