To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

Archiwum - [dodatek] Hash hase? sol?

tartut - 29-12-2011, 13:48
Temat postu: [dodatek] Hash haseł solą
Kod:
##############################################################
## MOD Title: Hash haseł solą
## MOD Author: Tartut tartut@o2.pl http://www.przemo.org/phpBB2/forum/profile.php?mode=viewprofile,u,29980
## MOD Description: Modyfikacja hashuje hasła z solą. Jest kompatybilna wstecz, dzięki temu użytkownicy którzy
##                  hasło mają zakodowane bez soli zalogują się i będą mieli możliwość zmiany hasła.
##               
## Installation Level:  (Easy)
## Installation Time:   5 Minutes
## Files To Edit (5):
##              login.php
##              admin/admin_users.php
##              language/lang_polish/lang_profile.php
##              includes/constants.php
##              includes/usercp_register.php
## Included Files: (1)
##              incluse/functions_hash.php
##       
##############################################################




Stworzyłem modyfikację poprawiającą bezpieczeństwo haseł użytkowników. Modyfikacja ta hashuje hasła z solą globalną i solą unikalną, czyli każdy użytkownik ma własną do konta przypisaną sól. Sól globalna jest ustalona przez administratora forum. Logowanie będzie działać ze starą metodą hashowania, ale użytkownik po zalogowaniu otrzyma komunikat proszący o zmianę hasła.

Jeżeli ktoś nie wie o co chodzi z solą:
Sól (ang. salt) w kryptografii dane dodawane podczas szyfrowania.



Ważne, to trzeba wykonać!
W pliku includes/constants.php w linijce:
Cytat:
define('SALT', ' ');

Pomiędzy apostrofami należy podać hasło, im więcej znaków tym lepiej. Musi ono być ze specjalnymi znakami, a nie typu mojastrona.pl. Zalecam o długości ponad 32 znaki. ;)
Hasło te dodajesz raz i więcej nie zmieniasz!



Sądzę że będą osoby które mogą się przyczepić o hashowanie, ale po prostu tak chciałem zrobić. :P W pliku function_hash.php można zmienić metodę hashowania z solą, ale to dla bardziej zaawansowanych ;)






1 stycznia poprawiona instrukcja, błąd powstawał podczas rejestracji. Użytkownicy którzy się zarejestrowali się po zainstalowaniu tej modyfikacji, trzeba im zmienić hasła poprzez PA! Z zaistniałej sytuacji przepraszam.
2 stycznia poprawiona instrukcja poprzez użytkownika phpbb

phpbb - 01-01-2012, 18:37

Po zainstalowaniu modyfikacji oraz zmianie haseł które mają znaki specjalne typu @#$%^&*(){} itp, nie można się zalogować. Inaczej mówiąc w nowych hasłach można używać tylko znaków alfanumerycznych. (a-z, 0-9)
tartut - 01-01-2012, 19:44

jeżeli ktoś już zainstalował tę modyfikację przed 1 stycznia 2012 godz. 19.40 to niech wykona tę instrukcję:
Kod:

#
#-----[ Otwórz ]------------------------------------------
#

includes/usercp_register.php

#
#-----[ Znajdź ]------------------------------------------
#

$sql = "INSERT INTO " . USERS_TABLE . " (user_id, username, user_regdate, user_password, user_email,

#
#-----[ Dodaj przed ]------------------------------------------
#

$row['user_salt'] = ($row['user_salt'] == '') ? hash_usersalt($username, SALT) : $row['user_salt'];

#
#-----[ Znajdź ]------------------------------------------
#

$sql = "INSERT INTO " . USERS_TABLE . " (user_id, username, user_regdate, user_password, user_email,

#
#-----[ Znajdź w linii ]------------------------------------------
#

user_password,

#
#-----[ Dodaj w linii za ]------------------------------------------
#

user_salt,

#
#-----[ Znajdź ]------------------------------------------
#

, '" . str_replace("\'", "''", $new_password) . "',

#
#-----[ Dodaj w linii za ]------------------------------------------
#

'". $row['user_salt'] ."',



instrukcja w pierwszym poście zaktualizowana ;)

błąd występował podczas rejestracji

phpbb - 02-01-2012, 00:10

kolego tartut dzięki za pomoc na pm, jednak ja nadal miałem problem z logowaniem i nie chodzi tutaj już o znaki specjalne, po rejestracji nowego konta z hasłem 'zzz' nie można było się zalogować. Gdyby ktoś miał problemy podaje co należy zrobić.

Po zainstalowaniu moda ZNAJDŹ:

Kod:
 $new_password = hash_password($cur_password, $row['user_salt'], SALT);


ZAMIEŃ NA

Kod:
$new_password = hash_password($new_password, $row['user_salt'], SALT);



Następny problem był z edycją profilu przez użytkownika. Kiedy użytkownik chciał zmienić podpis, awatar i inne rzeczy poza hasłem, w bazie 'user_salt' zmieniał wartość na ' ' (pustą), aby uniknąć takiej sytuacji należy:

ZNAJDŹ

Kod:
$sql = "UPDATE " . USERS_TABLE . "
                SET " . $username_sql . $passwd_sql . "user_salt = '".$row['user_salt']."


DODAJ PRZED

Kod:
$row['user_salt'] = ($row['user_salt'] == '') ? hash_usersalt($username, SALT) : $row['user_salt'];



Polecam modyfikację, ponieważ wiem, że są sposoby aby wyciągnąć MD5 z bazy. Rozszyfrować hasło przy pomocy tęczowych tablic też nie jest trudno.

tartut - 02-01-2012, 17:10

@up
warto dodać żeby to wykonać w pliku includes/usercp_register.php ;)

Dzięki za poprawki :)

Aktualizacja paczki!

Seba123 - 23-02-2012, 23:25

Proponuję użyć dodatkowo np. sha1 niż md5.
Boltex - 29-03-2012, 14:23

Westbam, jest ona ciągle testowana.
tartut - 29-03-2012, 19:29

Błąd który znalazł phpbb został poprawiony, teraz modyfikacja działa poprawnie, ale jeżeli chcesz to możesz przetestować i sprawdzić jak działa na testowym forum. Na razie nikt się nie skarżył że modyfikacja działa niepoprawnie. ;)
Cytat:
Czy hasło które wpisze w pliku includes/constants.php będę musiał pamiętać i czy będę go musiał gdzieś jeszcze użyć w przyszłości? (jedno z drugim się wiąże)

Ty nie będziesz musiał go używać, ustawiasz raz i musi takie zostać, bo potem nie będzie działać logowanie dla starych użytkowników. Ale jeżeli boisz się że np. że ktoś ci się włamie na ftp i skasuje constants.php to możesz zapisać lub zapamiętać te hasło.



Powered by phpBB modified by Przemo © 2003 phpBB Group