Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Quais são os pontos fracos desse método de autenticação de usuário?


Faça um favor a si mesmo e use uma biblioteca padrão para fazer hash de suas senhas.

Como a segurança tende a ser muito mais complicada e com mais possibilidades de erros invisíveis do que a maioria dos programadores poderia resolver sozinhos, usar uma biblioteca padrão é quase sempre a opção mais fácil e segura (se não a única).

A biblioteca padrão :
Dê uma olhada em:Estrutura de hash de senha PHP portátil :phpass e certifique-se de usar o CRYPT_BLOWFISH algoritmo, se possível.

exemplo de código usando phpass (v0.2):
require('PasswordHash.php');

$pwdHasher = new PasswordHash(8, FALSE);

// $hash is what you would store in your database
$hash = $pwdHasher->HashPassword( $password );

// $hash would be the $hashed stored in your database for this user
$checked = $pwdHasher->CheckPassword($password, $hash);
if ($checked) {
    echo 'password correct';
} else {
    echo 'wrong credentials';
}

O PHPass foi implementado em alguns projetos bastante conhecidos:
  • phpBB3
  • WordPress 2.5+, bem como bbPress
  • a versão Drupal 7, (módulo disponível para Drupal 5 e 6)
  • outros

O bom é que você não precisa se preocupar com os detalhes, esses detalhes foram programados por pessoas com experiência e revisados ​​por muita gente na internet.

Faça o que fizer se optar pelo 'farei eu mesmo, obrigado ', não use MD5 mais . É um bom algoritmo de hash, mas completamente quebrado para fins de segurança .

Atualmente, usando crypt , com CRYPT_BLOWFISH é a melhor prática.
CRYPT_BLOWFISH em PHP é uma implementação do hash Bcrypt. O Bcrypt é baseado na cifra de bloco Blowfish, fazendo uso de sua configuração de chave cara para diminuir a velocidade do algoritmo.

Para obter mais informações sobre esquemas de armazenamento de senha, você também pode ler Jeff `s post sobre isso:Você provavelmente está armazenando senhas incorretamente