2010-11-22 30 views
7

Html.TextAreaForwithout kodlamasını kullanarak nasıl kullanabilirim? Bunun bir güvenlik riski olduğunu biliyorum ancak herhangi bir metni dezenfekte eden ayrı bir sınıfa sahibim.Kodlama olmadan ASP.NET MVC3, Html.TextAreaFor?

Örnek:

@ Html.TextAreaFor (model => model.PostBodyText, 10, 100, 1)

I TinyMCE ile kullanmak düşünüyorum.

Selamlar RaVen

Yeni Jilet Görünüm Engine kullanıyorum GÜNCELLEME.

cevap

9

Kendi rulo gerekir: Bu site olarak çok tehlikeli olabilir

Tabii
<textarea cols="100" id="PostBodyText" name="PostBodyText" rows="10"> 
    @MvcHtmlString.Create(Model.PostBodyText) 
</textarea> 

güvenlik açısından artık XSS saldırılarına karşı savunmasız olduğunu. Öyleyse sorusu, sizin için işi yapmak için sadece HTML yardımcılarına güvenebileceğiniz zaman bütün metni dezenfekte eden ayrı bir sınıfa sahip olmanızın nedeni nedir?

+0

Teşekkürler ... Sizden ayrılmak isterdim ama siteye yeniyim :) – RaVen

+0

@RaVen, sorun yok, soru sorduğunuzda ve cevapları kabul ettiğinizde itibar kazanın. –

+0

Evet Biliyorum ama javascript etiketlerini filtreliyorum ... Sadece bazı güvenli html etiketlerine izin veriyorum. Ama evet TinyMCE bir güvenlik açığına neden olabilir. Tekrar çok teşekkürler. :) – RaVen

1

Alternatif bir seçenek olarak, ValidateInput'u here açıklandığı şekilde kullanmak isteyebilirsiniz. MVC tarzında bir örnek verilebilir:

[ValidateInput(false)] 
public ActionResult Method(){ 
    return View() 
} 

[ValidateInput(false)] 
[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Method(){ 
    // your stuff here 
    RedirectToAction("index"); // or something 
} 

Bunu gitmek için MVC yol daha olduğunu düşünüyorum. Artık denetleyiciniz, o denetleyici yönteminde bir güvenlik sorunu olduğunu söyler. Görünümünüz, html yardımcılarını vb. Kullanarak normal görünüm olabilir. Bunun, filtrelenmemiş her türlü girişi etkinleştirdiğini unutmayın. TinyMCE ile çalışacak olsa da.

// düzenleme Sana

<httpRuntime requestValidationMode="2.0"/> 

MVC yeni sürümlerinde de webConfig eklemek gerekir bkz

woops. Tahmin etmenin yolu olmayabilir.

+0

Bu tam olarak doğru. [ValidateInput (false)], formunuza HTML'nin gönderilmesini sağlayacaktır. –

İlgili konular