2013-01-05 29 views
5

Bir MVC eylem yöntemine işaretleme içeren bir JSON nesnesini göndermek için JQuery's $ .Ajax (..) kullanıldığında, içeriğin ASP.Net'in isteği tarafından reddedilmediğini öğrenince şaşırdım doğrulama.Ajax JSON tabanlı gönderi html ile reddediliyor

JSON postalarına istek doğrulamanın uygulanmamasının bir nedeni var mı? Aşağıdaki tanım ile

, biçimlendirme ... sunucu tarafından reddedildi

$.ajax({ 
     url: '/Controller/Action', 
     data: JSON.stringify({data:data}), 
     type: "POST", 
     dataType: "json", 
     contentType: "application/json", 
     }); 

o

Ben

MVC 3.0 .NET 4.0 kullanıyorum tip JSON mesajların ile iç içedir gibi görünüyor değil

Açıklamaları bir veritabanına kaydetmek için işlevsellik yaratıyorum. İşaretleme/komut dosyaları, istek doğrulamasını geçebilecek bir güvenlik sorunu gibi görünüyor ...

Çeşitli özelliklere sahip bir JSON nesnesini (örneğin commentText) gönderiyorum Herhangi bir nedenle, nedense işaretleme içermiyorsa bu gönderiyi reddetmiyor <div></div> vb

Bulunan davranışlarını açıklamaya görünüyor burada bir makale:

http://weblogs.asp.net/imranbaloch/archive/2011/05/23/security-issue-in-asp-net-mvc3-jsonvalueproviderfactory.aspx

+0

bir ipucu var gibi gözüküyor? Çünkü talep doğrulama 4.0'da değişti. – Venemo

+0

Güncelleştirilmiş soru. Kullanıyorum. Net 4.0 – TGH

cevap

3

burada kullandığınız ASP.NET hangi sürümünü söyleyebilir misiniz http://weblogs.asp.net/imranbaloch/archive/2011/05/23/security-issue-in-asp-net-mvc3-jsonvalueproviderfactory.aspx

+0

gibi bir JSON nesnesi içeren bu bir yanıt değil, yalnızca bir gözlem ve hafifletme için bir öneridir. Uygulama/json'un neden ASP.NET RequestValidation'a tabi olmadığı sorusu yanıtlanmamıştır. –

+0

@Andreas, yorumun kesinlikle cevabı bulamıyor. Polisliğinizi koruyun ve yardımcı olacak bir şey önerin. – Brian

+0

Merhaba @Brian, amacım TGH'yi soruyu tekrar açmaktı, çünkü asıl cevapla ilgileniyorum. Niyeti daha iyi ifade edebileceğimi (ve TGH’ye yönlendirdiğini) fark ettim. Polislik için özür dilerim, bu tür bir SO kullanıcısı olarak karşılaşmaktan nefret ederim. –

1

Ben sunucuya geçiş veri neye benzediğini tam olarak bilmiyorum, ama şu anda sadece düz bir dize değeri 'xyz' olduğunu varsayalım.

{ "data": "test"}

Bu mükemmel ok ve ASP.NET tarafından tespit potansiyel bir iş parçacığı temsil etmez Bu durumda sunucu şu POST verilerini alır.

ps: veri olarak başka değerler kullanıyorsanız bütün hikaye ... farklı olabilir

+0

Evet,

TGH

0

talep doğrulama Veri Ek Açıklama kullanarak Modeli çalışır. Modeldeki HTML makyaj girişini etkinleştirebilir ve devre dışı bırakabilirsiniz. Bunu modelinizde yapmak için [AllowHtml] 'yi kullanabilirsiniz. Bundan sonra bir kullanıcı herhangi bir normal alanda HTML girerse, o zaman Model.IsValid özelliğini kullanarak hatayı kontrol edebilirsiniz.