Darren Davies jest częściowo rację mówiąc, że należy użyć soli - istnieje kilka problemów z jego twierdzeniem, że MD5 jest niepewna.
Powiedziałeś, że musisz wprowadzić hasło przy użyciu skrótu Md5, ale to tak naprawdę nie mówi nam dlaczego. Czy to dlatego, że jest to format używany podczas sprawdzania hasła? Czy masz kontrolę nad kodem, który potwierdza hasło?
Rzecz w korzystaniu z soli polega na tym, że unika problemu, w którym 2 użytkowników ma to samo hasło - będą również mieli ten sam skrót - nie jest to pożądany wynik. Używając różnej soli dla każdego hasła, to nie powstaje (przy bardzo dużych wolumenach danych nadal istnieje ryzyko kolizji wynikających z 2 różnych haseł - ale na razie to zignorujemy).
Więc można Aither wygenerować losowy wartość dla soli i przechowywać że zbyt w rekordzie, czy można korzystać z niektórych danych, które już posiadają - takich jak nazwa użytkownika:
$query="INSERT INTO ptb_users (id,
user_id,
first_name,
last_name,
email)
VALUES('NULL',
'NULL',
'".$firstname."',
'".$lastname."',
'".$email."',
MD5('"$user_id.$password."')
)";
(jestem zakładając, że poprawnie udało ci się uciec wszystkie te struny wcześniej w twoim kodzie)
nie tylko md5 go, użyj lepszej funkcji lub co najmniej soli i md5 –
1.Nie używaj md5 do przechowywania haseł 2. Funkcje mysql_ * są pomijane. –
Dokumenty są przydatne tutaj: http://www.php.net/manual/en/function.md5.php, również https: //dev.mysql. com/doc/refman/5.5/en/encryption-functions.html, ale powinieneś _nie_ używać md5. Nie jest już wystarczająco silny. Co najmniej sha512 jest preferowany, ale przeczytaj długą odpowiedź połączoną poniżej. –