Pourquoi est-il Json Request Behavior
nécessaire?
Si je veux restreindre les HttpGet
demandes à mon action, je peux décorer l'action avec l' [HttpPost]
attribut
Exemple:
[HttpPost]
public JsonResult Foo()
{
return Json("Secrets");
}
// Instead of:
public JsonResult Foo()
{
return Json("Secrets", JsonRequestBehavior.AllowGet);
}
Pourquoi n'est-ce pas [HttpPost]
suffisant?
Pourquoi le framework nous "bogue" avec JsonRequestBehavior.AllowGet
tout ce JsonResult
que nous avons. Si je veux refuser d'obtenir des requêtes, j'ajouterai l' HttpPost
attribut.
c#
.net
asp.net-mvc
asp.net-mvc-3
security
gdoron soutient Monica
la source
la source
Réponses:
Par défaut, MVC
DenyGet
vous protège contre une attaque très spécifique impliquant des requêtes JSON afin d'améliorer la probabilité que les implications de l'autorisation d'HTTP GET
exposition soient prises en compte avant de les autoriser.Ceci est opposé à après quand il pourrait être trop tard.
Remarque: Si votre méthode d'action ne renvoie pas de données sensibles, il doit être sûr d'autoriser le get.
Lectures complémentaires de mon livre Wrox ASP.NET MVC3
Question StackOverflow associée
Avec la plupart des navigateurs récents (à commencer par Firefox 21, Chrome 27 ou IE 10), ce n'est plus une vulnérabilité.
la source
JsonRequestBehavior.AllowGet
tous les JsonResult que j'ai. Si je veux refuser la demande, j'ajouterai l'HttpPost
attribut.Pour vous faciliter la tâche, vous pouvez également créer un attribut de filtre d'action
et l'utiliser sur votre action
la source
Par défaut Jsonresult "Deny get"
Supposons que si nous avons une méthode comme ci-dessous
Par défaut, il "Deny Get".
Dans la méthode ci-dessous
Lorsque vous devez autoriser get ou utiliser get, nous devons utiliser JsonRequestBehavior.AllowGet.
la source
Améliorant un peu la réponse de @Arjen de Mooij en rendant le AllowJsonGetAttribute applicable aux contrôleurs mvc (pas seulement les méthodes d'action individuelles):
la source
Tu n'en a pas besoin.
Si votre action possède l'
HttpPost
attribut, vous n'avez pas besoin de vous soucier de la définition deJsonRequestBehavior
et d'utiliser la surcharge sans celle-ci. Il y a une surcharge pour chaque méthode sans l'JsonRequestBehavior
énumération. Les voici:Sans JsonRequestBehavior
Avec JsonRequestBehavior
la source