Se ha compartido una buena práctica para manejar la carga de usuarios en esta publicación en el blog de seguridad de google : explica las dificultades comunes y algunos pasos de defensa adicionales. Déjame resumir aquí:
Codifique su salida para su contexto:
Asegúrese de tener la codificación de salida adecuada con un algoritmo diferente para el contexto. Debe tener diferentes prácticas de desinfección para cada HTML, atributos HTML, JSON, etc.
Sirve contenido de usuario de un dominio diferente:
En primer lugar, siempre es aconsejable servir contenido de usuario de un dominio diferente. Google usa googleusercontent.com
y seguramente encontrará una inversión barata en su seguridad. La Política del mismo origen te ayuda aquí, ya que un XSS, el dominio menos importante, no puede llegar a tu dominio principal.