Witam, mam pytanie odnośnie systemów informatycznych opartych o bazy danych. W bazie będą trzymane hashe starych haseł użytkowników, aby uniemożliwić użytkownikom możliwość ustawienia takiego samego hasła jak poprzednie.
Jak to najlepiej rozwiązać?
I: tabela users, w której trzymani są użytkownicy oraz pole password w niej oraz druga tabela users_passwords, do której będzie przenoszony obecny hash hasła w przypadku jego zmiany
czy
II: tabela users_passwords, w której będą trzymane obecne oraz stare hasła, zaś w tabeli users w polu password będzie wskazane tylko id hasła w tabeli users_passwords
Które rozwiązanie wydaje się być bardziej odpowiednie?
mmmmmmm
5.11.2014, 09:45:13
Pierwwsze rozwiązanie.
Częsciej odczytujesz hasło, niż je zmieniasz, więc wtedy niepotrzebnie ciągniesz dodatkową tabelę.
Pyton_000
5.11.2014, 09:55:34
Ja bym chyba to zrobił na zasadzie łączonej. Tabela historii haseł tak aby nie można było wybrać haseł z ost. np. 30 dni, i dodatkowo zapisane obecne tam gdzie masz czyli w users
Przy ustawianiu nowego sprawdzasz tabelę historii z ost. np. właśnie 30 dni (starsze wywalasz dla bezpieczeństwa)
grzes999
5.11.2014, 11:19:31
Jeżli tylko potrzebujesz poprzedniego hasła to wystarczy w tabeli user dodać pole old_password i nie ma chyba sensu bawić się w dodatkowe tabele.
W przypadku gdy potrzebne są inforacje o ostatnich zmianach np. z ostatnich 30 dni wtedy trzeba dodatkową tabelę. I każda zmiana hasła to nowy rekrod w tabeli password_history. Dodatkowo przydała by się też tabela normalizacyjna user->user_has_old_pass->user_old_pass
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.