He leído un montón de publicaciones en SO con respecto a XSS y cómo tratar. Generalmente, el consenso es una lista blanca sobre la lista negra y evita el uso de expresiones regulares (demasiadas variantes para tratar).TinyMCE, AntiXSS, MVC3 y GetSafeHtmlFragment
Estoy trabajando en una aplicación ASP.Net MVC3. Necesito poder mostrar HTML desde la entrada del usuario (por ejemplo, < strong>, < ul>, < li>, etc.) pero no quiero ningún riesgo de XSS.
Estoy usando el paquete AntiXSS a través de Nuget. En mi modelo, tengo
[AllowHtml]
public string UserDetails{ get; set; }
En mi opinión, tengo TinyMCE enganchado en el área de texto.
En mi controlador, me sale el mensaje desde la vista y desinfectar:
using Microsoft.Security.Application;
...
string SanitizedDetails = Sanitizer.GetSafeHtmlFragment(model.UserDetails);
Mi pregunta: ¿Hice lo correcto? ¿Estoy protegido de la mayoría de los problemas de XSS o estoy ladrando el árbol equivocado?