Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jakie są słabe punkty tej metody uwierzytelniania użytkownika?

Zrób sobie przysługę i użyj standardowej biblioteki za haszowanie haseł.

Ponieważ bezpieczeństwo jest o wiele bardziej skomplikowane i ma więcej niewidocznych możliwości zepsucia, niż większość programistów mogłaby sobie poradzić samodzielnie, korzystanie ze standardowej biblioteki jest prawie zawsze najłatwiejsze i najbezpieczniejsze (jeśli nie jedyne) dostępne.

Biblioteka standardowa :
Spójrz na:Przenośny framework do haszowania haseł PHP :phpass i upewnij się, że używasz CRYPT_BLOWFISH algorytm, jeśli to w ogóle możliwe.

przykład kodu przy użyciu 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';
}

PHPass został zaimplementowany w kilku dość znanych projektach:

  • phpBB3
  • WordPress 2.5+ oraz bbPress
  • Wydanie Drupala 7 (moduł dostępny dla Drupala 5 i 6)
  • inne

Dobrą rzeczą jest to, że nie musisz się martwić o szczegóły, te szczegóły zostały zaprogramowane przez ludzi z doświadczeniem i sprawdzone przez wiele osób w Internecie.

Cokolwiek zrobisz, jeśli zdecydujesz się na „Zrobię to sam, dziękuję podejście, nie używaj MD5 już . To fajny algorytm mieszający, ale całkowicie zepsuty ze względów bezpieczeństwa .

Obecnie przy użyciu crypt , z CRYPT_BLOWFISH jest najlepszą praktyką.
CRYPT_BLOWFISH w PHP jest implementacją skrótu Bcrypt. Bcrypt jest oparty na szyfrze blokowym Blowfish, który wykorzystuje kosztowną konfigurację klucza do spowolnienia algorytmu.

Aby uzyskać więcej informacji na temat schematów przechowywania haseł, możesz również przeczytać Jeff wpis na blogu na ten temat:Prawdopodobnie niepoprawnie przechowujesz hasła



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak liczyć wartości poziome w bazie danych?

  2. Jak przechowywać zamówienia?

  3. #1062 – Zduplikowany wpis „” dla klucza „unique_id” podczas próby dodania UNIQUE KEY (MySQL)

  4. Konwersja mysql TIME z 24 GODZIN na format AM/PM

  5. Jak przeszukiwać tablicę JSON w MySQL?