Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] MD5 a skrypt AJAX CHAT
Forum PHP.pl > Forum > Przedszkole
7ad
Mam problem z porównaniem hasła do md5(hasła).

Jest to fragment orginalnego skryptu


  1. // The code bellow should work without modification for most users
  2. mysql_connect('localhost', $MySQL_username, $MySQL_password);
  3. mysql_select_db($MySQL_database);
  4. $username = isset($username) ? mysql_real_escape_string($username) : '';
  5. $password = isset($password) ? mysql_real_escape_string($password) : '';
  6.  
  7.  
  8. $result = mysql_query("select * from $MySQL_table where $MySQL_username_field = '$username' and ($MySQL_password_field = '$password' or $MySQL_password_field = MD5('$password') or MD5($MySQL_password_field) = '$password' or $MySQL_password_field = MD5(MD5('$password')) or MD5(MD5($MySQL_password_field)) = '$password')");
  9.  
  10. global $chat_data;
  11.  
  12. return mysql_fetch_assoc($result) ||
  13. isset($chat_data['user'][$username]) &&
  14. isset($chat_data['pass'][$username]) &&
  15. ($chat_data['pass'][$username] == ($password));
  16. }
  17.  


Baza haseł jest w MD5, jeśli w okienku logowania wpiszę hasło Md5, to działa.....
ikssde
O rety, a po co tyle tych porównań? Spróbuj tak smile.gif

  1. (...)
  2.  
  3. $password_md5 = isset($password) ? md5($password) : '';
  4. $result = mysql_query("select * from $MySQL_table where $MySQL_username_field = '$username' and $MySQL_password_field = '$password_md5'");
  5.  
  6. (...)
7ad
Niestety nie działa.

Próbowałęm też
  1. $password = isset($password) ? md5($password) : '';

i odpowiednie zmiany do zapytania mysql
ponieważ zmienna $password pojawia się w innym miwjscu.
Próbowałem tez wszedzie zmiennić $password na $password_md5.

ikssde
Tak musi działać:

  1. // The code bellow should work without modification for most users
  2. mysql_connect('localhost', $MySQL_username, $MySQL_password);
  3. mysql_select_db($MySQL_database);
  4. $username = isset($username) ? mysql_real_escape_string($username) : '';
  5. $password_md5 = isset($password) ? md5($password) : '';
  6. $password = isset($password) ? mysql_real_escape_string($password) : '';
  7.  
  8.  
  9. $result = mysql_query("select * from $MySQL_table where $MySQL_username_field = '$username' and $MySQL_password_field = '$password_md5'");
  10.  
  11. global $chat_data;
  12.  
  13. return mysql_fetch_assoc($result) ||
  14. isset($chat_data['user'][$username]) &&
  15. isset($chat_data['pass'][$username]) &&
  16. ($chat_data['pass'][$username] == ($password_md5));
  17. }


Na samym końcu, w tablicy $chat_data wnioskuję, że hasło przechowujesz w postaci zahashowanej.
Pokaż nam jeszcze kod, który jest odpowiedzialny za zapisywanie hasła do bazy, jak wygląda hashowanie hasła w tamtym miejscu?
7ad
Hasło w bazie przechowywane jest w postaci MD5

Jest to baza danych z PHPBB 3.1.1 i to tylko przez niego jest możliwość zapisywanie hasła.
Nie potrafię znaleźć w tych plikach miejsca zapisywania hasła

Niestety kod też nie działa.
ikssde
Skoro kod powyżej nie działa to znaczy, że hash hasła nie jest generowany jedynie przy pomocy md5. Możliwe, że do hasła dodawana jest sól albo zastosowany jest jeszcze jakiś inny mechanizm.

Poszukaj w dokumentacji w jaki sposób hasło jest hashowane albo znajdź fragment odpowiedzialny za logowanie i sprawdź czy wygląda tak samo jak twój.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.