Remover Tags HTML maliciosas

6 respostas
E

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:
<div onMouseOver="codigomalicioso"></div>
E transformá-lo em:
<div>/div>

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

Valeu

6 Respostas

M

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

E

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)

S

É 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.

E

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

F

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/">Link</a></p>
tem tudo lah no site deles…
http://jsoup.org/
Boa sorte !!

E

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

Criado 26 de março de 2007
Ultima resposta 1 de mar. de 2011
Respostas 6
Participantes 4