Sí, hay varias bibliotecas de este tipo. La elección de la biblioteca depende de qué lenguaje / marco de programación web está utilizando.
Primero, debes comenzar por leer sobre XSS. Recomiendo el siguiente documento:
Luego, una vez que se haya familiarizado con eso, puedo señalarle algunas bibliotecas que proporcionan funciones de escape bien probadas:
Sin embargo, permítame advertirle que usar estas funciones correctamente requiere conocimiento del desarrollador, y es potencialmente propenso a errores. Hay muchos contextos de análisis diferentes en los que se pueden inyectar datos dinámicos en contenido HTML, CSS o Javascript; cada contexto de análisis puede requerir que se aplique una función de escape diferente (o secuencia de funciones de escape). El desarrollador debe asegurarse de aplicar la (s) función (es) de escape correcta (s) cada vez que inyecte datos dinámicos en dicho contenido. Esto requiere conocer los riesgos de XSS y cómo defenderse contra ellos.
Este enfoque (que escapa manualmente los datos donde se usa) también es propenso a errores. Es fácil olvidarse de aplicar una función de escape. Si tiene 100 lugares donde incluye datos dinámicos en el documento, sería fácil de recordar en 99 lugares y, sin darse cuenta, olvidarse de escapar en uno de ellos. Somos solo humanos, y ese tipo de errores son fáciles de cometer. Las bibliotecas de funciones de escape no ayudan a los desarrolladores a evitar este problema.
Una mejor solución es usar un marco de programación web que ayude a los desarrolladores a evitar este problema. El estado del arte es la auto-desinfección sensible al contexto. Esto funciona particularmente bien con marcos que proporcionan un sistema de plantillas HTML. En tal sistema, el motor de plantillas es responsable de escapar automáticamente todos los datos no estáticos que se interpolan en la plantilla. Debido a que el motor de plantilla puede identificar el contexto de análisis donde se insertan dinámicamente los datos, el motor de plantilla puede seleccionar y aplicar automáticamente la función de escape adecuada.
El problema principal con la auto-desinfección sensible al contexto es que solo unos pocos marcos de programación web lo soportan actualmente. Algunos marcos web que admiten auto-saneamiento sensible al contexto: Google Ctemplate (Plantillas de cierre ), GWT, Google Clearsilver.
Para más información sobre este tema, puedo recomendar encarecidamente el siguiente trabajo de investigación: