Почему хеширование пароля делает систему более безопасной
Хеширование не равно шифрованию. Зашифрованные данные могут быть расшифрованы обратно в обычный текст. Хешированные данные не могут быть расшифрованы.
Хэшируя пароли вашего пользователя, никто не может увидеть, какие пароли используются. Таким образом, если ваши данные будут украдены, хакер не сможет расшифровать их. То же самое касается системного администратора, он / она не может «найти» пароль. Это может быть общий сценарий в средах общего хостинга.
Хранение паролей
Самый простой способ обезопасить схему хранения паролей - с использованием стандартной библиотеки .
Поскольку безопасность, как правило, намного сложнее и с более невидимыми ошибками, чем может решить большинство программистов в одиночку, использование стандартной библиотеки почти всегда является самым простым и наиболее безопасным (если не единственным) доступным вариантом.
Хорошо, что вам не нужно беспокоиться о деталях, эти детали были запрограммированы опытными людьми и проверены многими людьми в Интернете.
Подробнее о схемах хранения паролей читайте в блоге Jeff : Возможно, вы неправильно храните пароли
Что бы вы ни делали, если вы пойдете на '1027 *, я сделаю это сам, спасибо , больше не используйте MD5
. Это хороший алгоритм хеширования, но не работает в целях безопасности .
В настоящее время использование crypt , с CRYPT_BLOWFISH, является лучшей практикой.
Из моего ответа: Помогите мне сделать безопасным хранение моего пароля
Что касается печально известного варианта «Помни меня».
Создайте случайный токен и передайте его пользователю в виде файла cookie.
Если пользователь представляет куки с этим токеном, вы предоставляете им доступ. Ключ должен принимать каждый токен только один раз. Поэтому после использования замените его новым случайным токеном.
Этот токен, по сути, просто еще один пароль. Поэтому, чтобы сохранить его в безопасности, вы не храните токен, , но его хэш . (так же, как вы сделали с паролем)
Ваше предложение связать куки с IP-адресом, к сожалению, не будет работать. Многие люди имеют динамические IP-адреса, некоторые даже меняются от запроса к запросу в течение одного сеанса. (это, например, вызвано балансировкой нагрузки прокси).
Отправка паролей на сервер
Единственный способ, используемый в настоящее время для отправки пароля из веб-браузера на сервер, - это использование защищенного соединением SSL. Все остальное не будет безопасным, так как вы не можете гарантировать целостность решения на стороне клиента.