2012-02-02 6 views
3

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

  1. Что нужно хранить в переменных сеанса, чтобы проверить, что пользователь вошел в систему, это просто имя пользователя (или идентификатор). Если это просто имя пользователя, что происходит в том случае, если пользователь обнаружил, что его учетная запись была скомпрометирована, и вы хотите изменить пароль, чтобы остановить вредоносного пользователя во время его учетной записи? Если у злонамеренного пользователя есть сеанс, даже если пароль изменен, он может продолжать быть злым до истечения срока их сеанса, этого можно избежать - может быть, аннулировать все сеансы с этим именем пользователя при смене пароля?

  2. Сохраняет ли пароль (повторно зашифрованный солью, используемой только для файлов cookie) и имя пользователя в (HttpOnly) cookie, достаточно приличный способ иметь функцию «запомнить меня»? Я слышал, как в базе данных хранится имя пользователя и случайно сгенерированный ключ, и это также помещается в файл cookie пользователя. Затем, когда происходит действие пользователя, старый ключ заменяется на новый и передается в файл cookie пользователя. Достаточен ли этот тип безопасности для файлов cookie или будет достаточно обычного метода шифрования паролей?

ответ

3

Обычно, если вы хотите, чтобы помнить пользователю, вы создаете «ключ» и сохранить его в базе данных, а затем установите его «жизнь» (это может быть что угодно, как 6 часов или 2 дня). Вы сохраняете этот ключ в файле cookie (вместе с идентификатором пользователя). Теперь, каждый раз, когда пользователь подключается к сайту, вы сравниваете оба ключа. Если ключ в базе данных превысил срок его службы, вы создаете новый ключ и сохраняете его в файле cookie. Таким образом, если кто-то ворует cookie (каким-то образом), он должен будет использовать его, прежде чем снова подключиться к веб-сайту и сбросить ключ. Это метод, который я чаще всего вижу.

+0

Я думаю, что попробую этот метод. – Timm

2
  1. Если учетная запись уже скомпрометирована, для вас мало что может быть сделано. Злоумышленник, скорее всего, изменит пароль учетной записи, вместе с адресом электронной почты и т. Д. Попытка учитывать случай, когда «настоящий» пользователь и злоумышленник одновременно регистрируются, бессмысленны, ИМО.

  2. Никогда не храните конфиденциальные данные в файле cookie (только для HTTP).