Утерянные записи управления сессиями в базе данных. Как решить проблему? Риск стабильности БД

У меня есть веб-приложение, которое использует постоянные файлы cookie, чтобы позволить пользователю оставаться в системе.

Я использую Улучшенный постоянный логин cookie метод.
https://www.programering.com/a/MDO0MzMwATA.html
https://www.experts-exchange.com/questions/29006560/selector-validator-cookies.html

Когда пользователь входит в систему через форму LOGIN и просит запомнить, я генерирую случайный selector и случайный token и добавить их в таблицу под названием Session в моей БД вместе с userID и другие значения (IP, время, браузер, вода). Я также установил печенье называется KeepMeLoggedIn со значением selector:token и истекает через 30 дней.

Когда пользователь возвращается на сайт (до или после PHP Сессия / Кодовый Igniter истек) я проверяю $_SESSION переменная, если ничего не найдено, я ищу KeepMeLoggedIn печенье. Если cookie возвращает значение, я проверяю его по Session таблица, чтобы увидеть, если selector а также token матч. Если они совпадают, я сбрасываю token и сохранить его обратно в БД и cookie обновляется до нового selector:token значение и процесс входа в систему завершается.

Когда пользователь выходит из системы, я уничтожаю cookie а также session и удалите запись в БД для selector,

Все это прекрасно работает, за исключением случая, когда пользователь удалил куки вручную. Запись в моем Session стол осиротел. При тестировании моей системы я получил более 50 записей Session таблицу, которая была из куки, которую я вручную удалил при тестировании логики. Так как я вручную удалил куки selector был недоступен для кода, который будет удален / удален из Session DB.

Вот мой вопросs:
1) Каков подход к использованию этих осиротевших записей?
Моя первая мысль — просто очистить таблицу сеансов от любой даты старше, чем выбранная дата окончания срока действия для Remember Me функция, когда пользователь входит в систему, или в хрон-задании, или всякий раз, когда

Есть ли здесь другие идеи?

2) Является ли это уязвимостью в общей модели, которая может позволить хакеру:

create an account on a website
x=1
while x <2
-> login and ask to be remembered
-> delete the cookie
do();

И в конечном итоге заполняют таблицу сессий веб-сайта до тех пор, пока сайт не будет закрыт, добавив 1000 и 1000 записей с течением времени ??

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]