использовать сеансов . Сохраните идентификатор сеанса в файле cookie и сохраните состояние пользователя на стороне сервера (loggedIn, userId, IP).
Чтобы уточнить, что вам нужно хранить в массиве сессии:
- loggedIn: Логическая переменная, определяющая, вошел ли пользователь в систему или нет. Вы повторно используете один и тот же файл cookie для нескольких сеансов, поэтому вы запоминаете имя пользователя при следующем посещении вашего сайта и т. Д.
- userId: Уникальный идентификатор пользователя в базе данных. Используйте это, чтобы получить больше информации о пользователе, например, имя пользователя, адрес электронной почты и т. Д. Это также можно сохранить в массиве сеансов после выхода пользователя из системы.
- IP: Чтобы предотвратить кражу идентификатора сеанса и его использование, вы также сохраняете IP-адрес пользователя. Это необязательно, так как иногда вы хотите разрешить пользователю перемещаться (например, stackoverflow позволяет мне перемещаться с моим ноутбуком без выхода из системы при изменении IP-адреса).
- lastPing: Метка времени, которую пользователь видел в последний раз. Это можно использовать вместо даты истечения срока действия куки. Если вы также сохраните время жизни сеанса, вы можете выйти из системы из-за неактивности. Это означает, что cookie с идентификатором сеанса может храниться на компьютере пользователя в течение очень долгого времени.
Когда пользователь выходит из системы или выходит из-за неактивности, вы просто устанавливаете loggedIn
в false. Когда пользователь входит в систему с правильными именем пользователя и паролем, вы устанавливаете loggedIn
в true и обновляете другие поля (userId, IP, продолжительность жизни). Когда пользователь загружает страницу, вы проверяете lastPing
по текущему времени и lifetime
и обновляете lastPing
или выходите из системы.
Данные сеанса могут храниться либо в файловой системе, либо в базе данных. Если он хранится в базе данных, то userId является либо внешним ключом записи пользователя, либо все данные могут быть помещены в запись пользователя.
хеширование
перефразирование значения несколько раз не очень хорошая идея, потому что вы уменьшаете безопасность . Вместо этого используйте соль, комбинируя статическую соль (например, имя страницы), имя пользователя и пароль. Хеш, который занимает много времени, не лучше, чем быстрый хеш, хеш, который приводит к большому дайджесту, лучше, чем хеш, который приводит к короткому дайджесту (из-за грубой силы). Использование SHA1 должно быть достаточно для нормального сайта (то есть IE, а не банка или секретной военной организации).