Por isso deve-se evitar conferir a senha no SQL

O melhor é assim

Select * From Login Where (login = ‘”+var_login+”’)

// Confere se pegou o login
if (Result > 0)

Depois de Trazer o login  faz um IF

if (SuaQuery.SeuCampoSenha = VariavelSenha) 

Prossegue...

Assim ele pode colocar a injeção que quiser no SELECT pois quem verifica a 
senha é o IF

Ou seja, verifique o login e senha separadamente

* Por que o uso de “( )” ?

Isso evita injeção sem formatação, por exemplo a=b and 


From: Matheus de Oliveira 
Sent: Tuesday, August 07, 2012 8:32 AM
To: Comunidade PostgreSQL Brasileira 
Subject: Re: [pgbr-geral] Tratamento de Contrabarra


2012/8/6 Anselmo Silva <[email protected]>

  Matheus, obrigado.
  A Linguagem: Delphi. Como eu disse anteriormente o usuário é quem digita a 
contrabarra. 
  Como Alguns usuários já acabaram se acostumando em usar a barra como 
"coringa", estou momentaneamente contornando
  com uma função do Dephi ReplaceStr(where,'\', '%').

  Não estou tratando contra SQL injection, preciso ler mais sobre. Para essa 
gambiarra temporária haveria riscos de SQL injection?



Nossa, agora que eu entendi que a barra é o coringa. Particularmente já vi usar 
como coringa interrogação e asterisco, barra é a primeira vez... =P

Mas então, o risco de SQL Injection não está na barra, está se o cara digitar 
um apóstrofo (aspa simples).
Imagine só, se o cara digita isso aqui numa tela de login:

login: admin' or 1 = 1; --
senha: qualquer coisa

Daí você faz a consulta +/- assim:

    sql = "SELECT * FROM login WHERE login = '" + login + "' AND senha = '" + 
senha "'";

O SQL final ficaria:

    SELECT * FROM login WHERE login = 'admin' or 1 = 1; --' AND senha = 
'qualquer coisa';

Ou seja, o cara estaria logado como "admin" (veja que depois do "--" é 
comentário).

Se você tratar pelo menos a aspa simples, por exemplo trocando por duas aspas, 
você estará livre de SQL Injection. Uma dica boa é usar PREPARED STATEMENTS que 
já faz tudo isso pra você.

Atenciosamente,
--
Matheus de Oliveira





--------------------------------------------------------------------------------
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a