Temat: Czy można zmienić kodownie haseł na md5 ?

Witam, mam pewien problem z forum, udało mi się połączyć bazę danych mojej strony i forum. Jednak forum korzysta z kodowania haseł SHA1, a strona z md55 i tutaj zaczynają się problemy. Gdy user rejestruje się na stronie jego hasło kodowane jest w md5. Może zalogować się zarówno na stronie jak i na forum, jednak w trakcie logowania na forum kodowanie jego hasła zmieniane jest na md5. Nadal może się on logować na forum, jednak skrypt serwisu nie potrafi odczytać hasła.

Czy da się zmienić kodowanie  haseł na md5 ???

Bardzo proszę o pomoc.

Moja strona to http://zagubieni24.info a adres forum to http://zagubieni24.info/forum-n

PS. Jestem tutaj nowy, więc witam wszystkich smile

Ostatnio edytowany przez glyzewski (2009-08-08 14:33:01)

2

Odp: Czy można zmienić kodownie haseł na md5 ?

Zalecam przeczytać: http://pl.wikipedia.org/wiki/MD5 oraz http://pl.wikipedia.org/wiki/SHA-1 SHA-1 to mniejsze zło, i lepiej jest zmienić kodowanie haseł na stronie. Jeżeli się jednak uprzesz mogę podać Ci instrukcję, aby zamienić wszystko na md5...

Żyj tak, jakbyś miał umrzeć jutro. Ucz się tak, jakbyś miał żyć wiecznie. ~Mahatma Gandhi
PunBB | Simple Machines Forum

3

Odp: Czy można zmienić kodownie haseł na md5 ?

Wiem, że kodowanie SHA-1 jest trudniejsze do złamania, a co za tym idzie hasła są bezpieczniejsze, jednak nie chciałbym zmieniać nic w skrypcie strony, dlatego bardzo proszę o podanie instrukcji jak zmienić wszystko w punbb na md5

4

Odp: Czy można zmienić kodownie haseł na md5 ?

Pliki i linie, w których występuje fraza sha1:

header.php (4 hits)
Line 83:     $forum_head['microid'] = '<meta name="microid" content="mailto+http:sha1:'.sha1(sha1('mailto:'.$user['email']).sha1(forum_link($forum_url['user'], $id))).'" />';
Line 83:     $forum_head['microid'] = '<meta name="microid" content="mailto+http:sha1:'.sha1(sha1('mailto:'.$user['email']).sha1(forum_link($forum_url['user'], $id))).'" />';
Line 83:     $forum_head['microid'] = '<meta name="microid" content="mailto+http:sha1:'.sha1(sha1('mailto:'.$user['email']).sha1(forum_link($forum_url['user'], $id))).'" />';
Line 83:     $forum_head['microid'] = '<meta name="microid" content="mailto+http:sha1:'.sha1(sha1('mailto:'.$user['email']).sha1(forum_link($forum_url['user'], $id))).'" />';

include\functions.php (6 hits)
Line 1076:         $key = substr(sha1(uniqid(rand(), true)), 0, $len);
Line 1106:     return sha1(str_replace('&amp;', '&', $target_url).$forum_user['csrf_token']);
Line 1117:     return sha1($salt.sha1($str));
Line 1117:     return sha1($salt.sha1($str));
Line 1215:         if ($cookie['expire_hash'] !== sha1($forum_user['salt'].$forum_user['password'].forum_hash(intval($cookie['expiration_time']), $forum_user['salt'])))
Line 1227:         forum_setcookie($cookie_name, base64_encode($forum_user['id'].'|'.$forum_user['password'].'|'.$expire.'|'.sha1($forum_user['salt'].$forum_user['password'].forum_hash($expire, $forum_user['salt']))), $expire);

login.php (8 hits)
Line 54:         $sha1_in_db = (strlen($db_password_hash) == 40) ? true : false;
Line 57:         if ($sha1_in_db && $db_password_hash == $form_password_hash)
Line 59:         else if ((!$sha1_in_db && $db_password_hash == md5($form_password)) || ($sha1_in_db && $db_password_hash == sha1($form_password)))
Line 59:         else if ((!$sha1_in_db && $db_password_hash == md5($form_password)) || ($sha1_in_db && $db_password_hash == sha1($form_password)))
Line 59:         else if ((!$sha1_in_db && $db_password_hash == md5($form_password)) || ($sha1_in_db && $db_password_hash == sha1($form_password)))
Line 66:             // There's an old MD5 hash or an unsalted SHA1 hash in the database, so we replace it
Line 67:             // with a randomly generated salt and a new, salted SHA1 hash
Line 110:         forum_setcookie($cookie_name, base64_encode($user_id.'|'.$form_password_hash.'|'.$expire.'|'.sha1($salt.$form_password_hash.forum_hash($expire, $salt))), $expire);

profile.php (1 hits)
Line 262:                 forum_setcookie($cookie_name, base64_encode($forum_user['id'].'|'.$new_password_hash.'|'.$expire.'|'.sha1($user['salt'].$new_password_hash.forum_hash($expire, $user['salt']))), $expire);

register.php (1 hits)
Line 258:             forum_setcookie($cookie_name, base64_encode($new_uid.'|'.$password_hash.'|'.$expire.'|'.sha1($salt.$password_hash.forum_hash($expire, $salt))), $expire);

zamień wszystkie sha1 na md5, wcześniej wykonując kopię plików wink

Żyj tak, jakbyś miał umrzeć jutro. Ucz się tak, jakbyś miał żyć wiecznie. ~Mahatma Gandhi
PunBB | Simple Machines Forum

5

Odp: Czy można zmienić kodownie haseł na md5 ?

Zmieniłem wszystko, jednak nadal jest coś nie tak, mogę się normalnie zalogować w punbb (w bazie mam już hasło w md5), jednak po wylogowaniu gdy chcę się ponownie zalogować nie mam już takiej możliwości i wyświetla mi się informacja o złym haśle zarówno w punbb i w serwisie. W bazie mysql hasło również zostaje zmienione (jest inny ciąg cyfr i liter niż poprzednio).  Czy można by zrobić coś jeszcze ?

Ostatnio edytowany przez glyzewski (2009-08-08 17:32:20)

6

Odp: Czy można zmienić kodownie haseł na md5 ?

Wyczyść ciasteczka i napisz czy pomogło.

Żyj tak, jakbyś miał umrzeć jutro. Ucz się tak, jakbyś miał żyć wiecznie. ~Mahatma Gandhi
PunBB | Simple Machines Forum

7

Odp: Czy można zmienić kodownie haseł na md5 ?

No niestety nie pomogło, jeszcze coś pokombinuję.

8

Odp: Czy można zmienić kodownie haseł na md5 ?

Ok, dokładniejsza instrukcja, powinno działać na 99,9%. Edytuj wcześniejsze kopie bezpieczeństwa.

header.php:

$forum_head['microid'] = '<meta name="microid" content="mailto+http:sha1:'.sha1(sha1('mailto:'.$user['email']).sha1(forum_link($forum_url['user'], $id))).'" />';

zamień na:

$forum_head['microid'] = '<meta name="microid" content="mailto+http:sha1:'.md5(md5('mailto:'.$user['email']).md5(forum_link($forum_url['user'], $id))).'" />';

login.php:

else if ((!$sha1_in_db && $db_password_hash == md5($form_password)) || ($sha1_in_db && $db_password_hash == sha1($form_password)))

zamień na:

else if ((!$sha1_in_db && $db_password_hash == md5($form_password)) || ($sha1_in_db && $db_password_hash == md5($form_password)))

forum_setcookie($cookie_name, base64_encode($user_id.'|'.$form_password_hash.'|'.$expire.'|'.sha1($salt.$form_password_hash.forum_hash($expire, $salt))), $expire);

zamień na:

forum_setcookie($cookie_name, base64_encode($user_id.'|'.$form_password_hash.'|'.$expire.'|'.md5($salt.$form_password_hash.forum_hash($expire, $salt))), $expire);

profile.php:

forum_setcookie($cookie_name, base64_encode($forum_user['id'].'|'.$new_password_hash.'|'.$expire.'|'.sha1($user['salt'].$new_password_hash.forum_hash($expire, $user['salt']))), $expire);

zamień na:

forum_setcookie($cookie_name, base64_encode($forum_user['id'].'|'.$new_password_hash.'|'.$expire.'|'.md5($user['salt'].$new_password_hash.forum_hash($expire, $user['salt']))), $expire);

register.php:

forum_setcookie($cookie_name, base64_encode($new_uid.'|'.$password_hash.'|'.$expire.'|'.sha1($salt.$password_hash.forum_hash($expire, $salt))), $expire);

zamień na:

forum_setcookie($cookie_name, base64_encode($new_uid.'|'.$password_hash.'|'.$expire.'|'.md5($salt.$password_hash.forum_hash($expire, $salt))), $expire);

include\functions.php:

$key = substr(sha1(uniqid(rand(), true)), 0, $len);

zamień na:

$key = substr(md5(uniqid(rand(), true)), 0, $len);

return sha1(str_replace('&amp;', '&', $target_url).$forum_user['csrf_token']);

zamień na:

return md5(str_replace('&amp;', '&', $target_url).$forum_user['csrf_token']);

return sha1($salt.sha1($str));

zamień na:

return md5($salt.md5($str));

if ($cookie['expire_hash'] !== sha1($forum_user['salt'].$forum_user['password'].forum_hash(intval($cookie['expiration_time']), $forum_user['salt'])))

zamień na:

if ($cookie['expire_hash'] !== md5($forum_user['salt'].$forum_user['password'].forum_hash(intval($cookie['expiration_time']), $forum_user['salt'])))

forum_setcookie($cookie_name, base64_encode($forum_user['id'].'|'.$forum_user['password'].'|'.$expire.'|'.sha1($forum_user['salt'].$forum_user['password'].forum_hash($expire, $forum_user['salt']))), $expire);

zamień na:

forum_setcookie($cookie_name, base64_encode($forum_user['id'].'|'.$forum_user['password'].'|'.$expire.'|'.md5($forum_user['salt'].$forum_user['password'].forum_hash($expire, $forum_user['salt']))), $expire);
Żyj tak, jakbyś miał umrzeć jutro. Ucz się tak, jakbyś miał żyć wiecznie. ~Mahatma Gandhi
PunBB | Simple Machines Forum

9

Odp: Czy można zmienić kodownie haseł na md5 ?

No niestety nie działa, po zalogowanie się pojawia się informacja "Zalogowałeś się prawidłowo, jednak ciasteczka w przeglądarce nie zostały zapisane. Sprawdź w preferencjach czy ciasteczka są włączone.", a hasło w bazie danych i tak zostaje zmienione i ponowne zalogowanie nie jest już możliwe. Jednak bardzo dziękuję za pomoc, gdy tylko będę miał jakiś problem z punbb na pewno będę pisał na forum. Obecnie jednak muszę zająć się problemem jaki mam w serwisie, a dokładniej, to po wgraniu kopii bazy danych pojawiły się krzaczki w tekstach.

10

Odp: Czy można zmienić kodownie haseł na md5 ?

Okazało się, że zrobiłem pewien błąd przy podmianie, teraz gdy go poprawiłem można się już normalnie zalogować, jednak nadal hasło w bazie danych zmienia swoją postać. Można ponownie zalogować się na forum, jednak w serwisie jest niemożliwe. Hasło zapisane w md5 zmienia swoją postać (inny ciąg liter i cyfr) później jest cały czas tak samo. Wydaje mi się, że za zmianę hasła odpowiada ta funkcja:

$query = array(
'UPDATE'    => 'users',
'SET'        => 'pass=\''.$form_password_hash.'\', salt=\''.$forum_db->escape($salt).'\'',
'WHERE'        => 'id='.$user_id
);

gdy ją usunę hasło w bazie nie ulega zmianie, jednak pojawia się informacja o tym, że zalogowałem się prawidłowo, jednak ciasteczka nie zostały zapisane.

EDIT: Udało mi się uporać z moim problemem może komuś się to przyda, dlatego podam co jeszcze należy zmienić w plikach (poza tym, co podał Duch)

login.php

$form_password_hash = forum_hash($form_password, $salt);

należy zmienić na

$form_password_hash = md5($form_password);

Bardzo dziękuję za pomoc.

Ostatnio edytowany przez glyzewski (2009-08-10 20:10:09)