Основы системы запоминания

Я использую систему входа в систему PHP / MySQL. Я хотел бы добавить к нему помню. Какова основная механика помнить-меня? Включает ли это добавление нового столбца в таблицу в MySQL, где хранится вся информация пользователя и т. Д.?

Заранее спасибо,

Джон

Для этого существует несколько разных методов. Безопасный метод заключается в том, чтобы добавить поле в таблицу пользователей mysql и иметь хеш-память «remember_me», который является только случайным хешем.

Хэш должен быть сохранен в файле cookie на компьютере пользователя, а также в качестве идентификатора пользователя для проверки, как долго длится период запоминания (вы также должны указать период запоминания в БД как метку времени для дополнительной безопасности). Когда они подтягивают ваш сайт, вы видите, если этот файл cookie iset, если это тогда, вы просто аутентифицируете хеш для userid. Если он проверяет, они считаются зарегистрированными. Если он не проверяет, то отправьте их на страницу с надписью / они не считаются зарегистрированными.

Вот как я настраиваю большинство моих сайтов. Боль в том, что если они заходят с другого компьютера, то теперь они больше не проверяются на компьютере, который они использовали, и ему придется повторно аутентифицироваться. Но для меня важнее безопасность, потому что из-за этой ситуации им нужно снова войти в систему.

EDIT: см. Комментарии ниже для дополнительной информации о сеансах / безопасности.

Включает ли это добавление нового столбца в таблицу в MySQL, где хранится вся информация пользователя и т. Д.?

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

Вы почти наверняка не хотите, чтобы эти учетные данные отправлялись по незашифрованному соединению. Вы должны хранить их в безопасных файлах cookie, то есть куки, которые отправляются только через HTTPS (вы также должны установить cookie через незашифрованное соединение).

Если вы решите использовать безопасный файл cookie, но не хотите шифровать весь трафик, вы можете использовать два файла cookie:

  • Небезопасный файл cookie, который только сигнализирует серверу, что у вас есть безопасный файл cookie с учетными данными.
  • Безопасный файл cookie с самими учетными данными.

Затем, когда пользователь посещает ваш сайт и не входит в систему, вы проверяете наличие незащищенного файла cookie. Если он существует, вы перенаправляете пользователя на страницу HTTPS. Поскольку это безопасно, безопасный файл cookie с учетными данными пользователя отправляется клиентом. Затем переходите к проверке содержимого файла cookie с сохраненным в базе данных и входом в систему пользователя.

Когда кто-то входит в систему с настройкой «запомнить меня», сгенерируйте идентификатор и сохраните его в файле cookie.

Когда кто-то посещает страницу вашего сайта, найдите cookie. Если они есть, найдите его в своей БД, где он должен быть сопоставлен с идентификатором пользователя. Затем просто запустите все функции входа в систему, точно так же, как если бы они ввели правильное имя пользователя и пароль.