|
|
|

|

|
Dicas
|

|
ASP - Active Server Page (Miscelâneas)
|
|
 |
Título da Dica: Proteção de Hacking via Form Elements
|
 |
|
|
Postada em 13/10/2003 por ^HEAVY-METAL^
Se alguém se lembra da grande explosão de ISP's também se lembra da 'barracada' da falta de proteção dos Websites de um desses ISP's que permitia passar código de execução via QueryString. Estava eu a criar um formulário de entrada de dados quando me lembrei que talvez fosse possível também fazer isso via forms.
Pois a verdade é que dá mesmo se esses dados forem pré confirmados via Response.Writes ao cliente! Javascript, ASP, corre tudo.
Assim, e para evitar o que quer que seja de situações desse género criei uma função que tem uma execução simples : numa string, se à frente de um < ou atrás de um > não estiver um número, ele devolve um valor verdadeiro.
Existe assim a possibilidade de verificar, em qualquer parte do código, se uma dada string pode prejudicar por contendo elementos de scripting:
'Função Verifica por Ederico Rocha 2000 'Pega numa string e verifica se contém dados 'que executando possam abrir falhas de 'segurança 'Meio de utilização : Verifica(String) 'Resposta : TRUE se encontrar falha de segurança ' : FALSE se não encontrar Function Verifica(Texto) Dim CarAberturaTag, CarFechoTag
Verifica = false 'Se não se encontrar nada, devolve falso
If InStr(1,Texto,"<") <>0 then 'Caractér logo à frente do < CarAberturaTag = Mid(Texto,InStr(1,Texto,"<")+1,1) if (NOT Asc(CarAberturaTag) > 47) OR (NOT Asc(CarAberturaTag) < 58) then 'Se não for um número devolve verdadeiro - possível problema Verifica = true end if end if
If InStr(1,Texto,">") <>0 then 'Caractér logo atrás do > CarFechoTag = Mid(Texto,InStr(1,Texto,">")-1,1) if (NOT Asc(CarFechoTag) > 47) OR (NOT Asc(CarFechoTag) < 58) then 'Se não for um número devolve verdadeiro - possível problema Verifica = true end if End if
End Function
Espero desde já que a função ajude a quem nem sequer tinha antes pensado nisto (como eu ;p) e boa programação a todos.
T+,
|
|
|
|

|