Mengapa Json Request Behavior
dibutuhkan?
Jika saya ingin membatasi HttpGet
permintaan untuk tindakan saya, saya dapat menghias tindakan dengan [HttpPost]
atribut
Contoh:
[HttpPost]
public JsonResult Foo()
{
return Json("Secrets");
}
// Instead of:
public JsonResult Foo()
{
return Json("Secrets", JsonRequestBehavior.AllowGet);
}
Kenapa tidak [HttpPost]
cukup?
Mengapa kerangka kerja "bug" kita dengan JsonRequestBehavior.AllowGet
untuk setiap JsonResult
yang kita miliki. Jika saya ingin menolak mendapat permintaan saya akan menambahkan HttpPost
atribut.
c#
.net
asp.net-mvc
asp.net-mvc-3
security
gdoron mendukung Monica
sumber
sumber
Jawaban:
MVC secara default untuk
DenyGet
melindungi Anda dari serangan yang sangat spesifik yang melibatkan permintaan JSON untuk meningkatkan kemungkinan implikasi mengizinkanHTTP GET
paparan dipertimbangkan sebelum memungkinkan terjadinya.Ini ditentang setelah itu ketika mungkin sudah terlambat.
Catatan: Jika metode tindakan Anda tidak mengembalikan data sensitif, maka aman untuk mengizinkannya.
Bacaan lebih lanjut dari buku Wrox ASP.NET MVC3 saya
Pertanyaan terkait StackOverflow
Dengan sebagian besar browser terbaru (dimulai dengan Firefox 21, Chrome 27, atau IE 10), ini bukan lagi sebuah kerentanan.
sumber
JsonRequestBehavior.AllowGet
untuk setiap JsonResult yang saya miliki. Jika saya ingin menolak mendapatkan permintaan saya akan menambahkanHttpPost
atribut.Untuk membuatnya lebih mudah bagi diri Anda, Anda juga bisa membuat actionfilterattribute
dan menggunakannya pada tindakan Anda
sumber
Secara default Jsonresult "Deny get"
Misalkan kita memiliki metode seperti di bawah ini
Secara default, "Tolak Get".
Dalam metode di bawah ini
Ketika Anda perlu mengizinkan atau menggunakan get, kita harus menggunakan JsonRequestBehavior.AllowGet.
sumber
Memperbaiki jawaban @Arjen de Mooij sedikit dengan membuat AllowJsonGetAttribute dapat digunakan untuk mvc-controllers (bukan hanya metode aksi individual):
sumber
Kamu tidak membutuhkannya.
Jika tindakan Anda memiliki
HttpPost
atribut, maka Anda tidak perlu repot-repot mengaturJsonRequestBehavior
dan menggunakan kelebihan tanpa itu. Ada kelebihan untuk setiap metode tanpaJsonRequestBehavior
enum. Di sini mereka:Tanpa JsonRequestBehavior
Dengan JsonRequestBehavior
sumber