Remover Tags HTML maliciosas

Olá.

Preciso desenvolver um sistema que a pessoa possa mandar mensagens em HTML.
Até ai tudo bem, porém por segurança tenho que impedir que a pessoa possa inserir possivel código malicioso como:

<script>, <applet>, <iframe>, <frame>, etc, etc

Não só isso, impedir scripts escondidos como:[code]

[/code] E transformá-lo em: [code]
/div>[/code]

Alguém conhece alguma classe pronta que eu possa usar?

Valeu

Se você estiver usando JSTL pode usar o atributo escapeXml=“false” que exite no caso as tags html como texto e não as executa no navegador.

[]s

Não quero eliminar todas as tags, mas apenas agumas.

para eliminar TAGS já tenho a solução:

html.replaceAll("(?i)</?(SCRIPT|FRAME|IFRAME)\\b[^>]*>", "");

O problema é com atributos como:

<div onMouseOver="codigomalicioso"></div>

ou

<div onMouseOver='codigomalicioso'></div>

(repare as aspas que podem ser simples ou duplas, ou ainda inexistentes)

É complicado mesmo. Caso você tiver que fazer na unha, a única dica que sei dar é: (e talvez seja óbvio para você, mas aqui vai mesmo assim) define os tags que devem ser aceitos e os atributos para cada tag que devem ser aceitos, e elimine tudo resto. Senão, a pessoa querendo atacar seu site vai sempre pensar em mais um jeito de diferente de escrever isso.

Ressuscitando meu velho tópico.

A resposta para isto é: www.owasp.org/index.php/Category:OWASP_AntiSamy_Project

Há alguns bugs ainda com ele, mas quebra um galhão

Eu sei que o tópico é velho, porém tive o mesmo problema e acho que outros também podem ter…

Achei outra solução, que é usando o Jsoup…

ai vai um exemplo

String unsafe = "<p><a href='http://example.com/' onclick='stealCookies()'>Link</a></p>"; String safe = Jsoup.clean(unsafe, Whitelist.basic()); // now: <p><a href="http://example.com/" rel="nofollow">Link</a></p>
tem tudo lah no site deles…
http://jsoup.org/
Boa sorte !!

Atualmente uso esta solução aqui -> http://patapage.com/applications/pataPage/site/test/testSanitize.jsp

No entanto, olhando por alto a solução que você enviou parece ser mais robusta, pois esta ai de cima tive de alterar muitos Bugs que encontrei.

Já a outra solução do owasp, tive de descartar, pois em alguns casos ao limpar algum texto, a coisa simplesmente travava minha aplicação usando toda memoria RAM