Opiniões sobre essa função de login
Bom, uns dias atras abri um topico sobre as melhores criptografias para senha, TOPICO, então seguindo o concelho da galera, fiz usando a Bcripty, e ficou da seguinte forma a função de login
Aqui é a criação do objeto e a chamada da função apos o preenchimento no formulário, peguei apenas a parte necessária, já foi tudo filtrado e enviado nessa parte.
$cliente = new Cliente($email, $senha);
$FazerLogin = new ClientePdo();
$logou = $FazerLogin->fazer_login($cliente, $senha);
if ($logou === true) {
$sessao = new Sessao();
$sessao->carregaSessao($logou);
}else{
echo "Verifique os dados";
}
Logo então é chamada a função fazer_login, então abaixo o código
public function fazer_login($cliente, $senha){
try{
if($this->validar_senha($cliente, $senha) === true){
$query = "SELECT * FROM clientes WHERE email = :email";
$this->Select = $this->Conn->prepare($query);
$this->Select->BindValue(':email', $cliente->getEmail(), PDO::PARAM_STR);
$this->Select->execute();
if($this->Select->rowCount() == 1){
return $this->Select->fetch(PDO::FETCH_ASSOC);
}else{
return false;
}
}else{
return "Senha Invalida!";
}
} catch (PDOException $ex) {
exibeMensagens($Msg, $ErrNo);
}
}
Logo na primeira linha da função ja existe uma outra chamada, validar_senha com o objeto e a senha enviada separadamente, e compara se o resultado é true;
então vamos ao código da função.
private function validar_senha($cliente, $senha){
try{
$dados = $this->dados_usuario($cliente);
if($dados != null){
foreach($dados as $x){
$hash = $x['senha'];
if($hash != null){
if (crypt($senha, $hash) === $hash) {
return true;
} else {
return false;
}
}
}
}
} catch (PDOException $ex) {
exibeMensagens($Msg, $ErrNo);
}
}
Como podem ver, eu fiz um metodo para comparar as senhas digitada e a senha registrada no banco, e depois, para pegar os dados e fazer o login eu faço ele apenas com um where no email, mas ele entra lá só se as senhas forem iguais,
É a primeira vez que faço dessa forma, a pergunta é, é seguro fazer login comparando senha e email separadamente? Eu fiz varias tentativas aqui, e quando digitava senha errada, ou email errado não entrava, e quando digitava uma senha de uma outra conta tambem não, me pareceu seguro, mas conto com a opinião de vocês, pois é algo grande.Discussão (1)
Carregando comentários...