Я создал систему входа в систему, которая использует файлы cookie и сохраняет идентификатор сеанса в базе данных, поэтому ваш логин будет работать только с этим конкретным идентификатором сеанса. Я понимаю, что у этого есть несколько проблем:
Однако я хочу сохранить постоянный логин, который поставляется с куки-файлами, в то же время сохраняя безопасность.
Эффективно я хочу знать, есть ли лучший способ безопасно зарегистрировать пользователя на веб-сайте с помощью файлов cookie.
Прежде всего, хранение безопасных и постоянных логинов не идет вместе; вы всегда ставите под угрозу безопасность, внося какие-то постоянные логины.
Сказав это, статья Чарльза Миллера описывает такую систему:
создайте (достаточно большой) случайный ключ, предпочтительно используя /dev/urandom
или openssl_random_pseudo_bytes()
и openssl_random_pseudo_bytes()
его с учетной записью (в терминах базы данных: отдельная таблица со случайным ключом как основной (или уникальный) индекс и учетная запись как внешний ключ); ключ будет значением cookie.
когда не зарегистрированный пользователь представляет cookie, ключ и учетная запись просматриваются и пользователь регистрируется; после этого используемый ключ заменяется новым случайным ключом (также обновляется файл cookie).
пользователям, которые вошли в систему через файл cookie, следует снова попросить пароль, когда они получают доступ к конфиденциальной (учетной) информации.
пользователь должен иметь возможность выйти из всех своих устройств.
Также рекомендуется использовать обновление идентификатора сеанса с помощью session_regenerate_id()
всякий раз, когда пользователь входит в систему (через форму или файл cookie). Это не позволяет кому-то начать атаку фиксации сессии против кого-то другого и, возможно, украсть их личность.
Улучшение этой конструкции Барри Джаспена, которое также может помочь идентифицировать обнаружение краж, можно найти здесь .