Ir para conteúdo
Fórum Script Brasil
  • 0

Sql Injection


poirot

Pergunta

ola gente to querendo saber como faco para bloquear a aspa simples, olhem esse artigo que achei na net

Olá.. hoje falarei sobre segurança nos formulários.. principalmente nos Logins!

Muitos novatos (inclusive eu) desenvolvem seus sites.. pensando que está tudo OK, e tudo mais.. mas na verdade, quando tratamos de algum sistema de onde o usuário se cadastra, e depois efetua o eventual Login, não podemos vacilar.. pois hoje em dia, são muitos os "hackers" por aí...

e por isso, toda a segurança é bem vinda!

Bom, para os que não sabem, na maioria dos sites onde tem um sistema de membros, e um botão para efetuar o "LOGIN", se não for muito bem esquematizado, qualquer um pode efetuar um login... mesmo sem saber senha alguma!

É.. é isso mesmo..

Mas isso não acontece em todos as páginas, acontece geralmente nas páginas feitas por gente que não entende muito de SQL, ou até mesmo de Asp..

Bom.. na prática é muito simples.. é só você ir até algum site, e digitar uma aspa simples (') .. e depois clicar em enviar, submit, login, ou algo do genero..

Se ao clicar nesse botão, gerar um belo erro de script, então é isso mesmo.. caminho está livre!

Como fazer? Simples!

Apenas digite no login e na senha:

'OR '1' = '1 .. isso irá liberar um user logado para você!

Geralmente ele logará com o primeiro NICK do banco de dados.. mas pode acontecer de ser aleatório.. isso depende da estrutura do site em questão..

Imaginem isso: O cara se cadastra em um site de compras online, e lá põe seus dados como CPF, Cartão de crédito, RG, e tudo mais.. para depois se logar, e fazer as compras, que serão debitadas no user dele.. no site mesmo..

Imaginem se alguém se loga no nome dele, rouba os dados, e ainda faz uma compra gigantesca!

Perigoso, não?

E como resolver isso?

Simples! Apenas temos que fazer com que não dê erro em nossas paginas quando alguém digitar o caracter (').. a famosa aspa simples...

Para fazer isso é assim:

A aspa simples é o caracter 39 do teclado..

então usamos um comando que substitui ela por duas delas, pois aí o comando sql entende como se fosse apenas uma, e envia só uma pro BD!

a sintaxe é:

Var_User = Replace(Request.Form("user"),chr(39),"''")

e façam o mesmo para o campo senha..

isso substitui a aspa simples por duas aspas simples.. e apenas uma é inserida no BD! e isso não ocasiona erro algum.

Bom gente.. é isso aí!

Abraços!

Matéria editada por:

Rogério Lanzarin - (Dark)

se puderem me ajudar, pois comigo esta contecendo essse problema

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0
Guest - -#Alea#- -

Meu tem certeza que escreveu certo o comando

Replace(Request.form("senha"),chr(39),"''")

as vezes o pessoal se confude e coloca tudo aspas simples no comando depois da vírgula, mas é primeiro uma aspa dupla(") depois duas simples (' ') no final repete as dupla(").

Alea

Link para o comentário
Compartilhar em outros sites

  • 0

cara desculpa esta abusando mas isso é um problema chato

no meu scpript para fazer login esta assim

Sql ="select * from usuario where login ='"& request.form("USUARIO")&"'"

sql = sql & "and senha ='"& request.form("PASSOWORD")&"'"

e ai, como ficaria?

Link para o comentário
Compartilhar em outros sites

  • 0

só colocar uma das formas assima antes do SQL... coloca para todos os campos que quer bloquear.. uma linha para cada campo

o meu no seu codigo ficaria assim:

If InStr(Request.FORM("USUARIO"), Chr(39)) Then Response.redirect"erro.asp"

If InStr(Request.FORM("PASSWORD"),Chr(39)) Then Response.redirect"erro.asp"

Sql ="select * from usuario where login ='"& request.form("USUARIO")&"'"

sql = sql & "and senha ='"& request.form("PASSOWORD")&"'"

isto se quiser informar o erro.. se não faz como foi falado ai.. simplesmente ignore o caracter e limpe o campo para ser digitado novamente..

Link para o comentário
Compartilhar em outros sites

  • 0

Outra coisa que você pode fazer é guardar a senha criptografada no banco de dados , depois você faz um select somente pelo usuario (e não pelo usuario e senha), se achar o usuário , ai sim você valida a senha.

No caso acima não vai existir o usuario e mesmo que exista a senha não vai bater.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...