Fazendo um filtro contra tags html

3 respostas
Tiago_Farias

Olá galera,

fiz um filtro na minha app web para retirar as tags html(ex: torna-se apenas alert(‘aa’); ). Isso com o objetivo de evitar includes ou redirecionamento de páginas e coisas do tipo. Tá funcionando legal, mas só que o cliente agora apontou um campo que sempre vai conter tags html e que será salvo no banco. Como minha app evita as tags, estou preso. Então, preciso de uma forma de restringir que apenas esse campo mencionado poderá permitir tags html, qualquer outro continua filtrando. E oq vcs costumam fazer/sugerem para evitar esse tipo de script mal intencionado?

[]s.

3 Respostas

Tiago_Farias

Ok. Alguém aqui já fez algo parecido?

peczenyj

Tente convencer o uso de BBCODE ou Markdown no lugar de HTML puro. Lembre que o Orkut foi muito explorado e permitia muito menos que HTML puro.

Converse se vc pode restringir as TAGS para um grupo pequeno e controlavel: de repente não faz sentido ter uma tag script ou iframe.

Nessas tags tente restringir ao máximo os atributos permitidos (o link, a , precisa de um atributo href, mas um atributo onClick ou onLoad são arriscados).

Veja se faz sentido existir href para links externos e veja se vc pode trocar para algo semelhante a uma chamada javascript que invoca um alert ou modal dizendo “vc quer mesmo ir para o link www.meusitecomvirus.co.uk ?” - alias por expressão regular vc pode barrar links para javascript:alert(0) e coisas do tipo.

Na duvida troque os < e > por html special chars

Não permita inserir CSS, Javascript, etc. Leia muito sobre XSS e outros tipos de injeção de problemas. Seja Paranoico.

Estime que essa funcionalidade é muito cara e precisa ser feita com atenção, senão babau site. Diga que se estivessem usando BBCODE ou Markdown isso teria menos da metade do custo e velocidade de desenvolvimento.

Tiago_Farias

Então, estou usando expressão regular para substituir as tags maliciosas por caractere vazio. Inclusive consegui implementar o filtro que faz isso. O problema são as restrições. Ou melhor, a restrição. Existe um campo em toda a aplicação que, ao contrário de todos os outros, deve permitir tags html. É um campo q que é utilizado exatamente para isso: escrever textos em html. O problema é esse: como “dizer” ao meu filtro q as requisições daquele campo específico podem passar sem precisar ser filtrado?

[]s.

Criado 18 de março de 2009
Ultima resposta 19 de mar. de 2009
Respostas 3
Participantes 2