Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Elbrinner

Tag validas blog

Recommended Posts

Queria permitir apenas alguns tipos de tags mais nao sei como fazer.Geralmente nos blogs tem isso:HTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>Quero permitir apenas essas tags. Alguem pode me da alguma dica de como fazer isso?obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai tem q ser uma funcao, vou fzer uma bem simples:0- variavel "msg" contem o corpo da mensagem

Dim MsgMsg = Request("Mensagem")

1- Declara em array's as tags permitidas:

Dim arrAbre,arrFechaarrAbre = Array("<a ","<abbr ","<acronym ","<b>","<blockquote ","<code>","<em>","<i>","<strike>","<strong>")arrFecha = Array("</a>","</abbr>","</acronym>","</b>","</blockquote>","</code>","</em>","</i>","</strike>","</strong>")

2- Faz um loop e substitui as tags permitidas por colchetes por ex, tipo um bbcode

For Cont = 0 To UBound(arrAbre)Msg = Replace(Msg,arrAbre(Cont),Replace(arrAbre(Cont),"<","["))Msg = Replace(Msg,arrFecha(Cont),Replace(arrFecha(Cont),"<","["))Next

3 - Substituimos tbm os delimitadores das tags por colchetes, e as aspas por "#" por ex:

Msg = Replace(Msg,">",]")Msg = Replace(Msg,"""","#")

4 - Limpamos possiveis outras possiveis tags

Msg = Server.HTMLEncode(Msg)

5 - Agora, a msg estah pronta para ser exibida, devemos apenas substituir o colchete por tag:

Msg = Replace(Msg,"[","<")Msg = Replace(Msg,"]",">")Reponse.Write(Msg)

o que acontece se o hacker enviar a seguinte mensagem:<script>location.href('http://www.domain.com');</script>vai imprimir no html:<script>location.href('http://www.domain.com');</script>ou seja, o script não será executado, porem as tags finais ainda aparecem, mas isso aparentemente não oferece problemas.agora se ele postar:[script]location.href('http://www.domain.com');[/script]ai sim ele lasco seu site, o script dele vai rodar, pois no final as colchetes serao sempre sustituidas por <tags>mas isto eh simples de resolver, ao inves de usar "[" use um code proprio tipo, por ex no segundo passo e com as demais, faça assim:Msg = Replace(Msg,arrAbre(Cont),Replace(arrAbre(Cont),"<","#ABRETAGS#"))Msg = Replace(Msg,arrFecha(Cont),Replace(arrFecha(Cont),"<","#ABRETAGS#")).....Msg = Replace(Msg,">","#FECHATAGS#")eu naum conheco outro meio de se fazer talvez pq nunca precisei disso.eu naum testei este codigo, acabou de sai do forno entaum pode estar sem sal.qq duvida posta aet+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.