|
|
|

|

|
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.
|
|
|
|

|