PHP Сохранение текущих идентификаторов сеанса в базе данных с помощью файлов cookie

Я создал систему входа в систему, которая использует файлы cookie и сохраняет идентификатор сеанса в базе данных, поэтому ваш логин будет работать только с этим конкретным идентификатором сеанса. Я понимаю, что у этого есть несколько проблем:

  1. Если вы входите в систему на другом устройстве, идентификатор сеанса изменяется (нет нескольких логинов)
  2. Идентификатор сеанса – это единственное, что идентифицирует пользователя как вход в систему (я не уверен, является ли это угрозой безопасности, поскольку cookie является специфичным для домена)

Однако я хочу сохранить постоянный логин, который поставляется с куки-файлами, в то же время сохраняя безопасность.

Эффективно я хочу знать, есть ли лучший способ безопасно зарегистрировать пользователя на веб-сайте с помощью файлов cookie.

Прежде всего, хранение безопасных и постоянных логинов не идет вместе; вы всегда ставите под угрозу безопасность, внося какие-то постоянные логины.

Сказав это, статья Чарльза Миллера описывает такую ​​систему:

  1. создайте (достаточно большой) случайный ключ, предпочтительно используя /dev/urandom или openssl_random_pseudo_bytes() и openssl_random_pseudo_bytes() его с учетной записью (в терминах базы данных: отдельная таблица со случайным ключом как основной (или уникальный) индекс и учетная запись как внешний ключ); ключ будет значением cookie.

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

  3. пользователям, которые вошли в систему через файл cookie, следует снова попросить пароль, когда они получают доступ к конфиденциальной (учетной) информации.

  4. пользователь должен иметь возможность выйти из всех своих устройств.

Также рекомендуется использовать обновление идентификатора сеанса с помощью session_regenerate_id() всякий раз, когда пользователь входит в систему (через форму или файл cookie). Это не позволяет кому-то начать атаку фиксации сессии против кого-то другого и, возможно, украсть их личность.

Улучшение этой конструкции Барри Джаспена, которое также может помочь идентифицировать обнаружение краж, можно найти здесь .