2012/8/7 Marcelo Silva <marc...@ig.com.br> > 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 :) > > Não é a questão de testar a senha ou não via SQL, o que eu também não gosto, mas mesmo da forma que você passou um erro será gerado, e, se esse erro não for tratado corretamente o cara poderá ver esse erro e identificar a correção, daí é só o cara adicionar o parentese também.
O ideal é tratar a string e evitar o erro. -- Matheus de Oliveira
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral