PHP куки и безопасность сеансов для учетных записей пользователей - PullRequest
3 голосов
/ 02 февраля 2012

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

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

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

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

2 голосов
/ 02 февраля 2012
  1. Если учетная запись уже взломана, вы мало что можете сделать. Злоумышленник, вероятно, сам изменит пароль учетной записи вместе с адресом электронной почты и т. Д. Попытка учесть случай, когда «реальный» пользователь и злоумышленник вошли в систему одновременно, бессмысленна, IMO.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...