He utilizado el proyecto de desinfección de HTML OWASP con mucho éxito.
https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project
Las políticas pueden ser definidas (o políticas predefinidas se pueden utilizar) que permiten controlar lo que se permiten tipos de elementos HTML en la cadena que se está validado/desinfectados. Se puede usar un oyente ya que el código HTML se desinfecta para determinar qué elementos se rechazan, lo que le brinda flexibilidad sobre cómo comunicarlo al cliente. Además de una implementación fácil, también me gusta esta biblioteca porque es producida y mantenida por OWASP, una organización de larga data cuyo objetivo es la seguridad web.
posible duplicado de [Cómo "purificar" el código HTML para evitar ataques XSS en Java o JSP?] (http://stackoverflow.com/questions/3587199/how-to-purify-html-code-to-prevent-xss-attacks-in-java-or-jsp) y [Mejor expresión regular para detectar XSS (Cross-site Scripting)) ataque (en Java)?] (http://stackoverflow.com/questions/24723/best-regex-to-catch-xss-cross-site-scripting-attack-in-java) – BalusC
@BalusC - true. – ripper234