Bir kullanıcının HTML yorumları girmesine izin verme

MVC kullanarak, EF 4.2. Yorum bölümü olan bir uygulama üzerinde çalışıyorum. Şu anda bir kullanıcı, örneğin, HTML içeren bir yorum girerse.

text

ve isabet mesajını alıyorum "Ptentially tehlikeli bir Request.Form değeri tespit edildi ..."

  1. dtml'yi db'ye giderken nasıl ele alırım? HTML'yi soyayım mı? Ya da kodlamak? Server.htmlencode'u denedim ama yine de aynı hata mesajını kullandım.

I have read a number of posts on the matter including some here at SO - this one and this one

İdeal olarak, em güçlü gibi sınırlı sayıda html etiketine izin vermeyi istiyorum, a. Anti-XSS, HTML Çevikliği, bir tür BB kodu veya markdown stil editörü hala önerilen yöntem olabilir mi? Jeff'in beyaz liste koduna sahip olduğunu biliyorum - ancak birkaç yıl eski.

2

4 cevap

yapabilirsin

[ValidateInput(false)]
public ActionResult foo()
{
}

or you can decorate the model property with AllowHtml

   public class Foo
    {
        [AllowHtml]
        public string bar{ get; set; }
    }
1
katma
Bu işlem kapalıyken, eski görünüm motorunu kullanıyorsanız (ismini unuttum) <%:Html.TextBoxFor%> yazabilirsiniz, değeri kodlar veya ustura kullanıyorsanız @ sözdizimi html kodlayacak
katma yazar Rafay, kaynak
Xss ve diğer kodlar için endişeleniyorsanız Microsoft Anti-XSS kitaplığına bakın
katma yazar Buildstarted, kaynak
Bu özelliklere de baktım, ancak yorum yoluyla XSS ve kötü amaçlı kod gönderilmesine izin vermiyorlar mı?
katma yazar Ashok Padmanabhan, kaynak

MVC, doğrulamayı tamamen devre dışı bırakmadan html'ye izin vermesi gereken bir özellik belirtmenize izin veren bir özelliğe sahiptir. Hala tehlikelidir, ancak riskin hafifletilmesi için tek bir mülke sınırlandırılabilir. İşte MSDN makalesi AllowHtmlAttribute için . Özelliğin doğru kullanımı, modelinizdeki uygun özelliği dekore etmek olmalıdır:

public class MyModel
{
    public MyModel()
    {

    }

   //Some other stuff in here

    [AllowHtml]
    [HttpPost]
    public string MyHtmlString { get; set; }

}
0
katma

Ayrıca web.config'inizde requestValidationMode ayarlamanız gerekebilir:


  

Daha fazla ayrıntı için bu bağlantıya bakın.

0
katma

Html içeriğine izin verme çözümüm aşağıdaki gibidir:

  1. Yorum sınıfımdaki CommentText özelliğinde AllowHtml
  2. Dar bir etiket alt kümesine izin ver. Beyaz liste yoluyla izin verilmeyen Html ve satır içi komut dosyasını temizlemek için bir Html Temizleyici sınıfı kullanın
  3. Sonra normalde yaptığım gibi sonucu db'ye kaydedin
  4. Çıktı zamanında, Html'yi açıklamalarda göstermek için Html.Raw kullanın
0
katma