2010-08-30 2 views
1

Я нахожусь в процессе восстановления моей регистрации на своем веб-сайте и хочу узнать, правильно ли настроено мое хеширование. Или, если есть более безопасный способ, я могу это сделать. Я где-то читал, что соль может быть записана в базу данных для каждого пользователя.Как безопасно хранить регистрационную/регистрационную информацию, такую ​​как пароль?

Это моя безопасность до сих пор:

$salt = sha1(md5($activecode).$username); 

$username = mysql_real_escape_string($_POST['username']); 
$activecode = mysql_real_escape_string(time()); 
$pass1 = sha1(md5($_POST['pass1'].$salt)); 
$pass2 = sha1(md5($_POST['pass2'].$salt)); 
+1

Вам не нужно применять 'mysql_real_escape_string' значение возврата' time'; 'time' всегда возвращает целочисленное значение. – Gumbo

ответ

0

Этот очень фрагмент кода имеет очень мало безопасности. Как и с здравым смыслом. Какая польза от использования хэшей обоих паролей? Думаю, вам нужно сравнить введенные пароли, а затем сделать хэш всего один.

MD5 действительно неправильно здесь. Просто сделайте это sha1($_POST['pass1'].$salt));

mysql_real_escape tring - это связанная с базой данных функция, а не форма обработки. Правильное место для использования - это прямо перед добавлением данных в запрос. Для строк, входящих в запрос, заключенный в кавычки.

И что сказал Джо.

0

Может быть, я что-то не хватает, но как бы вы никогда не сможет подтвердить пароль. Вы используете текущую временную метку для соли, что означает, что в то время, когда вы проверяете пароль, вы получите что-то совершенно другое. Или вы сохраняете также файл activecode в базе данных?

Если вы это делаете, это выглядит хорошо для меня.

1

Ваши примеры странны. Я думаю, что линия 1 идет после строки 4?

Вы можете, конечно, сохранить динамические солевые ключи в базу данных. но если ваш md5 просочится, он, вероятно, справится с этим. так что это не сделало бы ничего хорошего против радужных столов.

Конечно, вы могли бы сохранить ключ соли в отдельной базе данных или что-то в этом роде, но я не знаю, насколько это было бы так.

все, что вы делаете, сохраняет только один ключ соли в вашем приложении.

, но гораздо более важные вещи, например, к * обеспечить ваш логин с HTTPS, * заставить пользователей использовать надежные пароли * пароли shuold меняются каждый лил в то время как * logut после х секунд * обеспечивают дистанционный выход из системы ... таких вещей

также я думаю, что двойное хэширование может привести к проблемам. dunno точно почему, но я не вижу большого смысла в том, что ...

Смежные вопросы