¿Por qué es Json Request Behaviornecesario?
Si deseo restringir las HttpGetsolicitudes a mi acción, puedo decorar la acción con el [HttpPost]atributo
Ejemplo:
[HttpPost]
public JsonResult Foo()
{
return Json("Secrets");
}
// Instead of:
public JsonResult Foo()
{
return Json("Secrets", JsonRequestBehavior.AllowGet);
}
¿Por qué no es [HttpPost]suficiente?
Por qué el marco nos "fastidia" con el JsonRequestBehavior.AllowGetpor todo lo JsonResultque tenemos. Si quiero negar las solicitudes de obtención, agregaré el HttpPostatributo.
c#
.net
asp.net-mvc
asp.net-mvc-3
security
gdoron está apoyando a Monica
fuente
fuente

Respuestas:
El valor predeterminado de MVC
DenyGetes protegerlo contra un ataque muy específico que involucra solicitudes JSON para mejorar la probabilidad de que las implicaciones de permitir laHTTP GETexposició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
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.
fuente
JsonRequestBehavior.AllowGetfastidia " con el por cada JsonResult que tengo? Si quiero negar la solicitud de obtención, agregaré elHttpPostatributo.Para que sea más fácil para usted, también puede crear un atributo de filtro de acción
y úsalo en tu acción
fuente
Por defecto Jsonresult "Denegar obtener"
Supongamos que si tenemos un método como el siguiente
Por defecto es "Denegar Obtener".
En el siguiente método
Cuando necesite permitir o usar get, tenemos que usar JsonRequestBehavior.AllowGet.
fuente
Mejorando un poco la respuesta de @Arjen de Mooij haciendo que AllowJsonGetAttribute sea aplicable a los controladores mvc (no solo a los métodos de acción individuales):
fuente
No lo necesitas.
Si su acción tiene el
HttpPostatributo, no necesita preocuparse por configurarJsonRequestBehaviory usar la sobrecarga sin él. Hay una sobrecarga para cada método sin laJsonRequestBehaviorenumeración. Aquí están:Sin JsonRequestBehavior
Con JsonRequestBehavior
fuente