Tengo la situación común en la que recibo la entrada del usuario que usa un subconjunto de HTML (entrada con tinyMCE). Necesito tener algo de protección del lado del servidor contra los ataques XSS y estoy buscando una herramienta bien probada que la gente esté usando para hacer esto. En PHP, veo muchas bibliotecas como HTMLPurifier que hacen el trabajo, pero parece que no puedo encontrar nada en .NET..NET HTML whitelisting (anti-xss/Cross Site Scripting)
básicamente estoy buscando una biblioteca para filtrar a una lista blanca de las etiquetas, los atributos de las etiquetas, y hace lo correcto con "difíciles" atributos como un: href y img: src
I' he visto la publicación de Jeff Atwood al http://refactormycode.com/codes/333-sanitize-html, pero no sé qué tan actualizado está. ¿Tiene alguna relación con lo que el sitio está utilizando actualmente? Y, en cualquier caso, no estoy seguro de que me sienta cómodo con esa estrategia de tratar de volver a convertir una entrada válida.
posterior Este blog expone lo que parece ser una estrategia mucho más convincente:
Este método consiste en analizar realmente el HTML en un DOM, validar que, a continuación, volver HTML válido de ella. Si el análisis HTML puede manejar el HTML malformado de forma sensata, entonces genial. Si no, no es gran cosa: puedo exigir HTML bien formado, ya que los usuarios deberían usar el editor tinyMCE. En cualquier caso, estoy reescribiendo lo que sé que es un HTML seguro y bien formado.
El problema es que es solo una descripción, sin un enlace a ninguna biblioteca que realmente ejecute ese algoritmo.
¿Existe una biblioteca de este tipo? Si no, ¿cuál sería un buen motor de análisis HTML .NET? ¿Y qué expresiones regulares deberían usarse para realizar la validación adicional a: href, img: src? ¿Me estoy perdiendo algo más importante aquí?
No quiero volver a implementar una rueda con errores aquí. Seguramente hay algunas bibliotecas de uso común por ahí. ¿Algunas ideas?
El paquete de agilidad es lo que terminé usando. Parece que está funcionando bien – Clyde