Я хочу, чтобы пользователь был в состоянии выбрать, "помнят меня" поле на моем веб-сайте, таким образом, они не должны регистрироваться в каждый раз, когда они прибывают. Так, я должен сохранить уникальный идентификатор в cookie для идентификации их. Действительно ли безопасно хешировать их пароль с sha512 и длинной солью в PHP и хранилище, которые оценивают в cookie? Если бы cookie был украден, то их пароль находился бы в опасности? Очевидно, это должно быть подключено к их паролю так или иначе, иначе если бы значение cookie было предположено или украдено, то пользователь не был бы в состоянии остановить кого-то еще вход в систему.
Кроме того, действительно ли желательно использовать GUID вообще в качестве уникального идентификатора?
Спасибо, Ben
Не помешало бы иметь какой-то «пароль» в cookie вместе с идентификатором пользователя (чтобы пользователи не могли изменить uid на идентификатор другого пользователя), просто не делайте «пароль» таким же как фактический пароль пользователя.
И то, что это хэш, не обязательно означает, что он односторонний (ну, по определению, но есть утилиты для генерации открытых текстов MD5, и я полагаю, что это только вопрос времени, когда это случится с другими) . Я бы хэшировал какой-то вторичный пароль.
Помните, что хэш пароля фактически является тем же самым, что и пароль. Тот, кто украдет хэш, получит такой же доступ к учетной записи пользователя, как если бы он украл его пароль. Поэтому не рекомендуется хранить хэш пароля пользователя в cookie, если только не было другой информации, не хранимой в cookie, которая используется для аутентификации (например, двухфакторная аутентификация).
Здесь - отличная статья именно по этой теме. Многие ответы на ваш вопрос касаются изложенных в нем техник.
При хорошем алгоритме и большой соли риск невелик, но зачем лишний раз рисковать?
Если вам просто нужно идентифицировать пользователя, то храните что-то, что может однозначно идентифицировать пользователя, например, guid вместе с каким-то другим хранимым проверочным кодом (не паролем, а случайной длинной строкой). Я бы не стал использовать только guid, поскольку это небезопасный метод аутентификации.