Есть ли относительно безопасный способ хранения пароля в cookie браузера (для запоминания информации для входа) в файл cookie без создания дополнительного столбца для хэша в базе данных? Благодарю.
Храните соленый хэш пароля в файле cookie
$salt = 'snfcikkfbnvekrew'; $cookie_value = md5($salt . $password);
Вы никогда не должны хранить незашифрованные или даже дешифруемые пароли в своей базе данных, если только вы их не сгенерировали, и пользователь не может ввести пользовательский пароль!
Наиболее распространенным способом является сохранение хэша пароля в файле cookie, который также находится в базе данных. Тем не менее, это позволяет любому войти в систему, просто зная хэш – без доступа к исходному паролю. Так что не ходите таким образом, хотя это, очевидно, самый простой.
Безопасным подходом было бы хранение случайного уникального «логина входа» в базе данных и установка этого хэша плюс идентификатор пользователя в файле cookie. Это не только сделает хеш-пароль бесполезным для входа в систему, но также позволит вам создать функцию «выйти из системы».
Хранение пароля или представление пароля в файле cookie – очень плохая идея. Конечно, вы можете защитить файл cookie, чтобы считывать пароль не удалось, но если файл cookie перехвачен, кто-то другой может установить этот файл cookie, предоставив ему полные разрешения предыдущего пользователя до момента, когда этот пароль будет изменен.
При прямом доступе к машине можно было бы украсть файл cookie, даже если HTTPS использовался, а затем украсть полный доступ человека, даже не зная значения пароля, еще раз, пока они не изменят этот пароль.
Возможно, это можно сделать безопасно с помощью какого-то неясного метода времени, связанного с конкретным временем, но моя рекомендация – не делать этого вообще. Вместо этого используйте сеансы и попытайтесь сохранить внутренний идентификатор, а не внешний. Если сеанс скомпрометирован, последствия по-прежнему серьезны, но, как правило, меньше, так как сессия истекает, а сеансы хорошо подходят для других форм безопасности (блокировка IP-адресов, упорядочение запросов и т. Д.).
Короткий ответ: никогда не храните пароли в файлах cookie или, если они не указаны в любом месте. Не. В вашем сценарии JSON-токены (JWT) могут использоваться для хранения авторизации на стороне клиента.