У меня есть веб-приложение, которое использует постоянные файлы cookie, чтобы позволить пользователю оставаться в системе.
Я использую Улучшенный файл cookie для постоянного входа .https://www.programering.com/a/MDO0MzMwATA.htmlhttps://www.experts -exchange.com / questions / 29006560 / selector-validator-cookies.html
Когда пользователь входит в систему через форму LOGIN и просит запомнить, я генерируюrandom selector
и random token
и добавьте их в таблицу с именем Session
в моей БД вместе с userID
и другими значениями (IP, время, браузер, что угодно).Я также установил cookie с именем KeepMeLoggedIn
со значением selector:token
и истекает через 30 дней.
Когда пользователь возвращается на сайт (до или после истечения PHP-сеанса / воспламенителя кода истек) Я проверяю переменную $_SESSION
, если ничего не найдено, я ищу свой KeepMeLoggedIn
печенье.Если файл cookie возвращает значение, я проверяю его по таблице Session
, чтобы узнать, совпадают ли selector
и token
.Если они совпадают, я сбрасываю token
и сохраняю его обратно в БД, и cookie
обновляется до нового значения selector:token
, и процесс входа в систему завершается.
Когда пользователь выходит из системы, я уничтожаю cookie
и session
и удаляю запись в БД для selector
.
Все это прекрасно работает, кроме случаев, когда пользовательудалил куки вручную.Запись в моей таблице Session
осиротела.При тестировании моей системы я обнаружил более 50 записей в моей таблице Session
, которые были из файлов cookie, которые я вручную удалил при тестировании логики.Поскольку я удалил cookie вручную, selector
не был доступен для кода, который будет удален / удален из БД Session
.
Так вот мой вопрос 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 записей с течением времени ??