Безопасное хранение паролей - PullRequest
2 голосов
/ 02 декабря 2010

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

Я знаю, что такие сервисы, как phpBB , используют скрытые / зашифрованные пароли.

Ответы [ 7 ]

5 голосов
/ 02 декабря 2010

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

3 голосов
/ 02 декабря 2010

Самый простой способ обезопасить вашу схему хранения паролей - с использованием стандартной библиотеки .

Поскольку безопасность, как правило, намного сложнее и с более невидимыми возможностями взлома, чем может решить большинство программистов в одиночку, использование стандартной библиотеки - почти всегда самый простой и безопасный (если не единственный) доступный вариант.

См. этот ответ для получения дополнительной информации

0 голосов
/ 02 декабря 2010

Хэш-пароли в SHA-1 (встроенная функция sha1 php) с несколькими рекурсиями засолки (один и тот же код в ответах выше, только повторяется несколько раз). Это должно быть достаточной защитой, поэтому, даже если злоумышленники каким-то образом получат хэши, они не смогут их взломать ...

0 голосов
/ 02 декабря 2010

Ну, вы не должны шифровать их с помощью MD5 (который на самом деле не защищен, у большинства хакеров есть таблицы преобразования).

Следовательно, вы можете хешировать его с помощью SHA1 (который обычно используется).

Если вы хотите больше безопасности, вы можете добавить больше salt, который является ключом , который вы можете добавить вот так (просто пример, обычно используемый):

salt+sha1(salt+pass)

Эта комбинация может использоваться со многими языками.

0 голосов
/ 02 декабря 2010

Существует возможность хэшировать пароли (желательно с солью):

$salt = random_string($length = 5);
$hash = $salt . sha1($salt . $password);

Или хранить в зашифрованном виде (только если ваше соединение MySQL защищено SSL):

INSERT INTO `user` (`user`,`pass`) VALUES("username",ENCRYPT("password","secretkey"))
0 голосов
/ 02 декабря 2010

Сохраните хэш MD5 и, чтобы сделать его более безопасным, добавьте соль.

0 голосов
/ 02 декабря 2010

Возможно, вы хотите хешировать пароль, а не шифровать его. Проверьте SHA-1 .Хеширование означает, что вы не можете получить исходные данные, как вы можете с помощью шифрования.Вместо этого вы хэшируете вводимые пользователем данные и сравниваете их с хешем в базе данных, чтобы узнать, получили ли они правильный пароль.Это повышает безопасность, как если бы ваша база данных была когда-либо взломана - куча хешей бесполезна.

...