Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, criei uma aplicação PHP para cadastro de usuarios, esse aplicação salva os dados num banco oracle. A senha do usuario passa pelo MD5 e é armazenada no banco. Esse sistema funcionou bem, até semana passada, qnd resolvi fazer umas alteraçoes percebi q ele não esta deixando eu me logar. Realizei testes e percebi q o hash da senha armazenada é diferente do hash da senha q estou digitando. Fiz a comparação visual.
Gostaria de saber oq pode ter ocorrido q modificou esse hash.
deve ter alguma parte do script que da pra alterar a senha.. ae você deve ter dado um hash encima do outro .. como ja estava logado nao aconteceu nada na hora.. mas depois quando foi logar dnovo percebeu .. a principio acho que pode ser isto mas fica dificil de analisar sem um script ..
posta ae o script man ..
valww =]
Bom, vou postar o codigo, mas já adiantando:
-A parte de alteração de senha ainda não foi montada.
-Eu usei a mesma senha por um mes, ou seja, loguei e desloguei 30 vezes por dia durante o desenvolvimento, ai parei com o projeto, e agora qnd fui reativar tive esse problema!
Uma questão, esses scripts sao acessados por tras de um ruby (cliente -> server ruby -> php -> server ruby -> cliente)
Esse server ruby foi alterado, sera q isso pode influenciar na geração do hash?
-> Código
Fiz uma busca em todos os scripts do projeto, e encontrei 3 lugares onde eu acesso o campo "internet_senha" que é onde as senhas são escritas:
Funçoes:
loga->recebe o cpf e a senha busca na base de dados comparando e caso encontre gera a sessão e retorna uma msg q o servidor ruby le e entende como logado
gera_senha-> faz um random de algusn caracteres, pega 6 insere na base de dados no lugar onde encontrou o cliente(cpf) e envia para o user , por e-mail, a senha gerada. e avisa ao servidor ruby q a senha foi gerada com sucesso.
verifica_existencia($cpf, $mail)-> essa função verifica se o cliente(cpf) o mail do cliente e a senha existem no sistema, se apenas cpf ou mail forem encontrados, nada eh feito, se encontrar o mail e o cpf ele deixa gerar a senha e se encontrar todos significa q o usuario jah esta cadastrado.
function loga($cpf, $senha){
$sql = q("select * from nbs.clientes cl, nbs.cliente_diverso cd where cl.cod_cliente = cd.cod_cliente and cl.cod_cliente = '$cpf' and cd.internet_senha = '".md5($senha)."'",0,0);
ocifetch($sql);
$encontrou = ociresult($sql,'COD_CLIENTE');
if($encontrou)
{
$_SESSION['cpf'] = $cpf;
$_SESSION['senha'] = $senha;
$_SESSION['nome'] = nome($_SESSION['cpf']);
echo $_SESSION['nome'];
}
}
function gera_senha($cpf, $mail)
{
$CaracteresAceitos = 'abcdefghijklmnopqrstuvxzywk0123456789';
$max = strlen($CaracteresAceitos)-1;
$password = null;
for($i=0; $i < 6; $i++) {
$senha .= $CaracteresAceitos{mt_rand(0, $max)};
}
$sql = q("update cliente_diverso set internet_senha = '".md5($senha)."' where cod_cliente = '".$cpf."'",1,0);
if($sql){
email($mail, $nome, 'Sistema', 'admin@sistema.com.br', "Senha para acesso ao Site", "Sua senha para acesso ao site e: ".$senha, '', '','','','','');
echo "CREATED";
}
}
function verifica_existencia($cpf, $mail)
{
$sql = q("select * from nbs.clientes cl, nbs.cliente_diverso cd where cl.cod_cliente = '$cpf' and cl.endereco_eletronico = '".$mail."' and cd.cod_cliente = cl.cod_cliente",0,0);
ocifetch($sql);
$encontrou .= ociresult($sql,'COD_CLIENTE');
$senha .= ociresult($sql,'INTERNET_SENHA');
if($encontrou)
if($senha)
echo "FOUND";
else
gera_senha($cpf, $mail);
else
echo "NOT FOUND";
}provavelmente....
Você diz que fez a comparação visual. Poste os dois hashs (o que está no banco de dados e o que você gera).
Carlos Eduardo
o sistema tem alguma parte que o usuario modifica a senha? http://forum.imasters.com.br/public/style_emoticons/default/grin.gif
assim do nada n tem muito como saber, teria que ver se existe alguma rotinha que modifica senha que você ta fazendo sem queere ou algo do tipo... teria que rever o codigo fonte...
n eh pra ter essa anormalidade de mudança assim do nada não...