Как я могу сообщить браузеру имя пользователя, когда пользователь обновляет свой пароль? - PullRequest
0 голосов
/ 13 января 2019

У меня есть система входа в систему (веб-сайт symfony / php). Когда пользователь входит в систему, браузер спрашивает пользователя (как это делают большинство браузеров в настоящее время), следует ли запомнить имя пользователя и пароль. Пока все хорошо.

Когда пользователю необходимо установить новый пароль по ссылке «забыл пароль», он получит ссылку через свой адрес электронной почты. Когда ссылка нажата, он получает форму с двумя входами (newPassword и newPassword2), где он может выбрать новый пароль.

Поскольку в этой форме нет username, браузер не может знать, под каким именем пользователя он должен сохранить этот пароль.

Как я могу заставить браузер узнать правильное имя пользователя? У меня есть все доступные данные, но я не знаю, как правильно представить их браузеру. Там не должно быть никаких дополнительных полей, видимых для пользователя.

Я пытался

<input type="hidden" name="username" value="some@username.com"/>

но, по крайней мере, Google Chrome, похоже, не считывает это значение для своего менеджера паролей.

1 Ответ

0 голосов
/ 14 января 2019

Не нужно отправлять имя пользователя в браузер (это опасно, я объясню дальше). При нажатии на ссылку «забыл пароль» сгенерируйте уникальный ключ и сохраните его в специальном поле пользовательской таблицы в базе данных (я назову его «проверочный код»). Этот код проверки будет вставлен в ссылку, отправленную пользователю. Когда пользователь нажимает на эту ссылку в своем электронном письме, этот код вставляется в скрытое поле формы «новый пароль». Этот ключ будет использоваться после отправки для определения пользователя.

Я рекомендую вам не вставлять имя пользователя напрямую, поскольку злонамеренный пользователь может изменить HTML-код для установки пароля любой учетной записи пользователя.

...