Как ограничить количество сессий для одного пользователя в redis?
Пытаюсь реализовать механизм сессий с помощью redis и express-session.
Но нашёл такую уязвимость:
While(True){
1. Выполняем login в Chrome. Получаем session в redis.
2. Удаляем файл cookie из Chrome.
3. Выполняем login в Chrome (для того же пользователя). Получаем 2 session в redis для 1 одного пользователя.
}
Итого у нас 100500 сессий для одного пользователя.
Есть ли способ защититься от этого?
Как лучше всего подсчитывать количество сессий пользователя? Есть ли какие-нибудь примеры?
HitGirl, хранить в Redis структуру, где ключи - id пользователей.
В простом варианте допускать единственную сессию. Новый логин затирает собой предыдущую активную сессию того же аккаунта.
В более сложном – значением держать не единственную запись сессии, а массив, с указанием timestamp начала каждой сессии. При добавлении проверять, сколько их там активных, удалять старые, при необходимости.