Я пытаюсь создать более или менее безопасную систему входа на свой сайт, у меня не было много времени на обеспечение безопасности, поэтому я учусь по мере продвижения. Хотелось услышать мнения о том, что из перечисленного лучше и почему. (или я где-то ошибся?)
$staticsalt = '$%*#)$*)^A#$#543667ggfdf\#$%x';
$random = md5(uniqid(mt_rand(), true));
$salt = hash('sha512',$random.$_POST['password'].microtime().$staticsalt);
либо (где наличие $ salt в базе данных не обязательно ...)
$password = crypt($_POST['password'], '$2a$12$'.$salt);
или (где мне также понадобится $ salt в базе данных ...)
$password = hash('sha512',$salt.$_POST['password']);
microtime()
, чтобы вы могли добавить его обратно при проверке пароля? - person Jared Farrish   schedule 14.08.2011microtime()
, вы никогда не сможете проверить сгенерированный хэш, включая его. У вас должна быть возможность восстановить весь ввод. - person Jared Farrish   schedule 14.08.2011microtime
в качестве рандомизатора. Я тоже сначала упустил это из виду ... - person deceze♦   schedule 14.08.2011/dev/random
или/dev/urandom
. - person Mike   schedule 14.08.2011