terça-feira, 18 de março de 2008

limpalogin()

Função para previnir sql injection

Function limpalogin(str)
    str = trim(str)
    str = lcase(str)
    str = replace(str,"=","")
    str = replace(str,"'","")
    str = replace(str,"""""","")
    str = replace(str," or ","")
    str = replace(str," and ","")
    str = replace(str,"(","")
    str = replace(str,")","")
    str = replace(str,"<","[")
    str = replace(str,">","]")
    str = replace(str,"update","")
    str = replace(str,"-shutdown","")
    str = replace(str,"--","")
    str = replace(str,"'","")
    str = replace(str,"#","")
    str = replace(str,"$","")
    str = replace(str,"%","")
    str = replace(str,"¨","")
    str = replace(str,"&","")
    str = replace(str,"'or'1'='1'","")
    str = replace(str,"--","")
    str = replace(str,"insert","")
    str = replace(str,"drop","")
    str = replace(str,"delet","")
    str = replace(str,"xp_","")
    str = replace(str,"select","")
    str = replace(str,"*","")
    limpalogin = str
End Function

3 comentários:

Anônimo disse...

Problemas nesta função. Imagine que o usuário nunca conseguiria se logar se a senha dele fosse "IandMyLove" ... enfim, não tenho sugestão para deixar ok essa função, mas ela não tem aplicabilidade.

Cristiano Nascimento disse...

Caro Helton,
Não entendi muito bem a sua colocação, mas se você está se referindo a questão case sensitive que alguns bancos são implementados dessa forma basta você comentar a terceira linha da função que é a que deixa a senha ou login em caixa baixa.

Espero ter ajudado.

Helton Eduardo Ritter disse...

Não, não, não é isso. Imagine que na senha do usuário exista algum desses caracteres que são substituídos. e se o usuário tiver uma aspa dupla ou simples na senha dele? a função vai tirar isso e substituir por nada, logo comparando com o que está guardado no banco não vai passar.

Se eu quisesse que minha senha fosse "dropMyTable"? é uma senha válida? é né, mas com essa função não daria.

Mas blz, é s[o um comentário.