USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  ASP - Active Server Page    (Miscelâneas)

Título da Dica:  Resolva em definitivo o problema dos '
Postada em 1/10/2003 por ~Ð@®£@Ñ            
Os apóstrofos em instruções SQL são um sério problema. Imagine a seguinte instrução sql :

select * from usuarios where login='fulano' and senha='xxx'

Imagine que fulano e xxx são informações digitadas pelo usuário e que você está testando se essa instrução devolve alguma linha. Se devolver o usuário existe e portanto pode acessar o site. Perfeito.

Mas e se o Hacker (ou um pentelho qualquer) digitar ' na caixa de entrada de dados.

Seu SQL não funcionará e será exibida a instrução SQL na mensagem de erro. Vendo o SQL o hacker poderá digitar o seguinte :

xx' or '1'='1

Percebeu o que vai acontecer quando isso for concatenado com seu SQL ?

Veja :

select * from usuarios where login='fulano' and senha='xx' or '1'='1'

Mesmo que o usuário não exista o '1'='1' no final da instrução fará com que todos os registros sejam retornados. Como sua aplicação só testava se havia retorno, o hacker vai entrar em seu site...

Para resolver isso basta fazer um tratamento adequado da digitação dos '. Além de proteger seu site contra ataques na instrução SQL isso irá evitar mensagens de erros desagradáveis quando a informação realmente contiver '.

A solução é simples : Sempre que precisamos guardar ' no banco devemos dobra-lo, colocando ''. Ao encontrar '' na instrução o banco entenderá que deve gravar apenas 1 '.

Para dobrar o apóstrofo basta utilizar a instrução Replace quando for concatenar a informação do usuário no SQL. Veja :

Replace(request.form("login"),"'","''")

Concatenando essa expressão no SQL os apóstrofos não serão mais problema.
 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página