Por definición, almacenar javascript y representarlo en el navegador es XSS
1) Añadir identidad
2) Agregue una política de uso: enlace
3) Estoy en contra del servidor de filtrado de listas blancas / listas negras porque es una solución al problema principal, es difícil de hacer bien y puede eliminar información que no debería eliminarse. Cuando tenga HTML5, CSS3 y JS en constante evolución, deberá seguir actualizando su lista blanca / lista negra hasta que el desinfectante en su lugar se convierta en una gran cantidad de código que permita todo y, por lo tanto, llegará a un punto que anule su propósito. , pero si insistes en esta pista OWASP HTML Sanitizer, JSoup es otro ejemplo aparte de lo mencionado anteriormente.
4) En lugar de 3) use enlace y elimine el soporte para navegadores antiguos, que es la forma correcta de corregir esto como en el servidor solo almacenaría contenido pero ejecutaría en el contexto del navegador
5) Puede agregar etiquetas de plantilla / marcadores de posición para reducir el riesgo (por ejemplo, reducción de marca), esto también ayudará a que sus herramientas de control de prueba no devuelvan el eco; alerta (1); ya que el servidor esperaría una entrada diferente para almacenar y enviar el javascript
6) Ejecute AV y fortifique el analizador de código estático en el servidor y muévalo hacia adelante
7) Integrado en la validación de errores: JSLint / JSHint / CSSHint, etc
8) Finalmente, si no confía en ninguna de las automatizaciones anteriores, agregue el factor humano para revisar y aprobar el paso antes de publicar