Como higienizar o código HTML em Java para evitar ataques XSS?

Estou procurando classe / util etc. para limpar o código HTML, ou seja, remover tags, atributos e valores perigosos para evitar XSS e ataques semelhantes.

Eu recebo o código html do editor de texto rico (por exemplo, TinyMCE), mas ele pode ser enviado maliciosamente, omitindo a validação do TinyMCE ("Dados enviados fora do local").

Existe algo tão simples de usar quanto o InputFilter no PHP? Solução perfeita que posso imaginar funciona assim (suponha que o desinfetante esteja encapsulado na classe HtmlSanitizer):

String unsanitized = "...<...>...";           // some potentially 
                                              // dangerous html here on input

HtmlSanitizer sat = new HtmlSanitizer();      // sanitizer util class created

String sanitized = sat.sanitize(unsanitized); // voila - sanitized is safe...

Atualizar - a solução mais simples, melhor! Pequena classe util com o mínimo possível de dependências externas em outras bibliotecas / estruturas - seria melhor para mim.

Que tal isso?

questionAnswers(5)

yourAnswerToTheQuestion