Dlaczego jest Json Request Behavior
potrzebny
Jeśli chcę ograniczyć HttpGet
żądania do mojej akcji, mogę ozdobić akcję [HttpPost]
atrybutem
Przykład:
[HttpPost]
public JsonResult Foo()
{
return Json("Secrets");
}
// Instead of:
public JsonResult Foo()
{
return Json("Secrets", JsonRequestBehavior.AllowGet);
}
Dlaczego nie [HttpPost]
wystarcza?
Dlaczego struktura „wkurza” nas za to, JsonRequestBehavior.AllowGet
co JsonResult
mamy. Jeśli chcę odmówić otrzymania żądań, dodam HttpPost
atrybut.
c#
.net
asp.net-mvc
asp.net-mvc-3
security
gdoron wspiera Monikę
źródło
źródło
Odpowiedzi:
MVC domyślnie
DenyGet
chroni Cię przed bardzo szczególnym atakiem obejmującym żądania JSON w celu zwiększenia prawdopodobieństwa, że implikacje zezwolenia naHTTP GET
ekspozycję zostaną rozważone przed zezwoleniem na ich wystąpienie.W przeciwieństwie do tego, kiedy może być już za późno.
Uwaga: jeśli metoda działania nie zwraca wrażliwych danych, zezwolenie na pobranie powinno być bezpieczne.
Dalsza lektura z mojej książki Wrox ASP.NET MVC3
Powiązane pytanie StackOverflow
W przypadku większości ostatnio używanych przeglądarek (począwszy od Firefox 21, Chrome 27 lub IE 10) nie jest to już luka w zabezpieczeniach.
źródło
JsonRequestBehavior.AllowGet
każdym JsonResult, który mam. Jeśli chcę odmówić otrzymania żądania, dodamHttpPost
atrybut.Aby ci to ułatwić, możesz także utworzyć atrybut filtru akcji
i wykorzystaj go w swojej akcji
źródło
Domyślnie Jsonresult „Deny get”
Załóżmy, że mamy metodę jak poniżej
Domyślnie jest to „Deny Get”.
W poniższej metodzie
Kiedy musisz zezwolić lub użyć get, musimy użyć JsonRequestBehavior.AllowGet.
źródło
Ulepszając nieco odpowiedź @Arjena de Mooij, dostosowując AllowJsonGetAttribute do kontrolerów mvc (nie tylko poszczególnych metod akcji):
źródło
Nie potrzebujesz tego.
Jeśli twoje działanie ma ten
HttpPost
atrybut, nie musisz przejmować się ustawieniemJsonRequestBehavior
i użyj przeciążenia bez niego. Istnieje przeciążenie dla każdej metody bezJsonRequestBehavior
wyliczenia. Tutaj są:Bez JsonRequestBehavior
Z JsonRequestBehavior
źródło