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 c=d Se vc tiver um separador ele vai ter que formatar tamebm na injeção (a=b)and(c=d) Se ele colocar uma injeção em b ou d vai ficar (a=admin or 1=1; -- ')... Veja que vai falta fechar o ")" gerando um erro Claro que o cara vai tentar de tudo, mas vamos dificultar o máximo :) Marcelo Silva -------------------------------------- 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 <anselmo....@gmail.com> 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 pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral