Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] MD5 a skrypt AJAX CHAT
7ad
post 23.11.2014, 00:07:10
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.10.2009

Ostrzeżenie: (0%)
-----


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.....
Go to the top of the page
+Quote Post
ikssde
post 23.11.2014, 01:47:20
Post #2





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

Ostrzeżenie: (0%)
-----


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. (...)


Ten post edytował ikssde 23.11.2014, 01:48:40
Go to the top of the page
+Quote Post
7ad
post 23.11.2014, 10:43:43
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.10.2009

Ostrzeżenie: (0%)
-----


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.

Go to the top of the page
+Quote Post
ikssde
post 23.11.2014, 10:50:40
Post #4





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
7ad
post 23.11.2014, 11:28:20
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.10.2009

Ostrzeżenie: (0%)
-----


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.

Ten post edytował 7ad 23.11.2014, 11:35:25
Go to the top of the page
+Quote Post
ikssde
post 24.11.2014, 09:57:48
Post #6





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 3.07.2025 - 11:42