| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 07:53:24
|
markin1
JavaEvangelist
Membro desde: 07/12/2008 20:58:59
Mensagens: 494
Localização: São Paulo
Offline
|
Bom dia pessoal, eu tô com um probleminha no SQL Server e PreparedStatement.
É apenas uma classe de login e senha mas nunca retorna nada a menos que eu passe os parâmetros de login e senha diretamente na String SQL. Eu não sei o que tem de errado ai, acho que é algo na String SQL mas eu não consigo achar o que exatamente.
Enfim vou postar aqui minhas classes.
UsuarioData
UsuarioBean:
Conexao:
|
Quem é o juíz? |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 08:46:55
|
Murilo_Ferreira
JavaTeenager
Membro desde: 01/08/2008 15:27:48
Mensagens: 156
Localização: Bombinhas-SC
Offline
|
Bom dia amigão,
só uma pergunta, o codigo retorna algum erro?, ou simplemente não retorna nada?
porque a passagem de paramentros esta correta.
valew
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 08:52:54
|
markin1
JavaEvangelist
Membro desde: 07/12/2008 20:58:59
Mensagens: 494
Localização: São Paulo
Offline
|
Não dá erro algum.
Hora que passa pelo if(rs.next()) é como se não encontrasse o registro e sai do método. Eu testo diretamente no SQL Server passando os mesmos parâmetros e encontra o registro, mas pelo java não encontra a menos que eu passe diretamente os parâmetros na string SQL.
This message was edited 2 times. Last update was at 13/02/2009 08:53:39
|
Quem é o juíz? |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 08:57:20
|
maschiojv
JavaChild
![[Avatar]](/images/avatar/9952cb25b58c5f4832396abf2bcfd66d.jpg)
Membro desde: 27/02/2007 18:29:37
Mensagens: 119
Offline
|
Será que não está faltando % no seu like?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 09:01:33
|
markin1
JavaEvangelist
Membro desde: 07/12/2008 20:58:59
Mensagens: 494
Localização: São Paulo
Offline
|
creio que não, como é um sistema de login eu tenho que pegar o registro exatamente igual ao parâmetro, se eu por % ele vai pegar qualquer registro parecido, por exemplo, usando % e digitar usuario: mar senha: 123 o sistema vai me retornar todos os registros que tenham mar no usuário e 123 na senha, por exemplo
marcelo, 123afd
marcos, 123mma
mario, 123asd
e assim por diante, ou estou equivocado?
|
Quem é o juíz? |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 09:01:52
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Não use LIKE para usuário e senha. Imagine se o cara digita "%%" para o usuário e senha; então QUALQUER usuário será validado, inclusive o tal hackeer ou cracker que vai destruir seu sistema. Insista no uso de "=", NUNCA NUNCA NUNCA o LIKE.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 09:03:12
|
markin1
JavaEvangelist
Membro desde: 07/12/2008 20:58:59
Mensagens: 494
Localização: São Paulo
Offline
|
thingol wrote:Não use LIKE para usuário e senha. Imagine se o cara digita "%%" para o usuário e senha; então QUALQUER usuário será validado, inclusive o tal hackeer ou cracker que vai destruir seu sistema. Insista no uso de "=", NUNCA NUNCA NUNCA o LIKE.
mas no SQL Server não da pra usar = em comparações de String, ou dá?! Se dá, eu não sei como fazer ^^
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 09:04:33
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
E mais uma coisa: por motivos de segurança, evite informar o usuário que "a senha está incorreta", se o usuário for encontrado no sistema mas a senha não.
O correto é barrar o acesso sempre, e sempre com a mesma mensagem "usuário e/ou senha estão incorretos", porque aí alguém que quiser entrar indevidamente não poderá nem "chutar" a senha de um usuário existente, já que ele não vai conseguir achar nem um nome de usuário.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 09:05:40
|
maschiojv
JavaChild
![[Avatar]](/images/avatar/9952cb25b58c5f4832396abf2bcfd66d.jpg)
Membro desde: 27/02/2007 18:29:37
Mensagens: 119
Offline
|
thingol wrote:Não use LIKE para usuário e senha. Imagine se o cara digita "%%" para o usuário e senha; então QUALQUER usuário será validado, inclusive o tal hackeer ou cracker que vai destruir seu sistema. Insista no uso de "=", NUNCA NUNCA NUNCA o LIKE.
mas ele está usando prepareStatment, ele já não é seguro contra sql injection?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 09:06:46
|
markin1
JavaEvangelist
Membro desde: 07/12/2008 20:58:59
Mensagens: 494
Localização: São Paulo
Offline
|
thingol wrote:E mais uma coisa: por motivos de segurança, evite informar o usuário que "a senha está incorreta", se o usuário for encontrado no sistema mas a senha não.
O correto é barrar o acesso sempre, e sempre com a mesma mensagem "usuário e/ou senha estão incorretos", porque aí alguém que quiser entrar indevidamente não poderá nem "chutar" a senha de um usuário existente, já que ele não vai conseguir achar nem um nome de usuário.
:)
Quanto a usar = ao invés de LIKE eu recebo a seguinte mensagem:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 09:07:05
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
markin1 wrote:
thingol wrote:Não use LIKE para usuário e senha. Imagine se o cara digita "%%" para o usuário e senha; então QUALQUER usuário será validado, inclusive o tal hackeer ou cracker que vai destruir seu sistema. Insista no uso de "=", NUNCA NUNCA NUNCA o LIKE.
mas no SQL Server não da pra usar = em comparações de String, ou dá?! Se dá, eu não sei como fazer ^^
É claro que dá, afinal de contas SQL Server não é Java e ele não usa "EQUALS" e sim "=".
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 09:07:25
|
maschiojv
JavaChild
![[Avatar]](/images/avatar/9952cb25b58c5f4832396abf2bcfd66d.jpg)
Membro desde: 27/02/2007 18:29:37
Mensagens: 119
Offline
|
temte colocar um trim nas suas comparações, trim(usuario) LIKE trim (?), o problema pode ser que no banco tem espaços em branco sobrando, tive um problema desses uns dias a traz.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 09:09:13
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
markin1 wrote:
thingol wrote:E mais uma coisa: por motivos de segurança, evite informar o usuário que "a senha está incorreta", se o usuário for encontrado no sistema mas a senha não.
O correto é barrar o acesso sempre, e sempre com a mesma mensagem "usuário e/ou senha estão incorretos", porque aí alguém que quiser entrar indevidamente não poderá nem "chutar" a senha de um usuário existente, já que ele não vai conseguir achar nem um nome de usuário.
:)
Quanto a usar = ao invés de LIKE eu recebo a seguinte mensagem:
Qual é o tipo dos dados dessas colunas? A coluna (usuário ou senha, não sei qual delas), se estou pensando bem, está cadastrada com tipo errado . O uso do tipo "text" em SQL Server só deve ser feito se você precisar de pôr uma quantidade de dados grande, como um documento; não um nome de usuário ou uma senha, que são coisas pequenas. Mude para "varchar".
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/02/2009 09:40:26
|
markin1
JavaEvangelist
Membro desde: 07/12/2008 20:58:59
Mensagens: 494
Localização: São Paulo
Offline
|
Demorei mas voltei ^^
Realmente o problema estava no tipo de dados, o campo senha estava como text, mudei pra varchar e substitui o LIKE por = na String SQL agora tá funcionando direitinho.
Agradeço a todo mundo ai que deu uma ajuda.
|
Quem é o juíz? |
|
|
 |
|
|