$salt //losowo wygenerowana podczas dodawania użytkownika - indywidualna dla każdego, trzymana w bazie
$pass //podawane przez użytkownika podczas logowania - służy do wygenerowania odpowiedniego hashu - 2 element składowy
$mail //niejako 'login' użytkownika 3 element składowy
$pass = $mail.'jakiś?tekst'.$salt.' - '.$pass.'całkiem#losowy&'.$mail; //generowanie hasła właściwego (mail, hasło, sól pobrana z bazy(indywidualna), sól wpisana na sztywnow kodzie
$pass = hash('sha512', $pass);//utworzone haslo które jest trzymane w bazie i porównywane z wygenerownym podczas logowania
Wychodziłem z założenia że:
- ktoś się wrypie do kodu - nie ma soli z bazy, nie ma loginu, wie jak wygenerować hasło, ma sól ze skrypty
- ktoś się wrypie do bazy - ma unikalną sól z bazy, wygenerowane hasło oraz login. Nie wie jak wygenerowane jest hasło, nie ma soli ze skryptu
- w obu przypadkach nie zna hasła właściwego użytkownika
Tak w maksymalnym skrócie rozwiązałem kwestie bezpieczeństwa danych użytkownika....Moich kilka pytań:
Ma to sens?
Jest bezpieczne?
Jakie plusy i minusy widzicie?
Jak to zrobić lepiej?
Jak to rozwiązaliście u siebie?