Кажете, че името на таблицата на базата данни за постоянна бисквитка е pcookies със следните колони:
- cookie_id (CHAR)
- user_id (INT)
- срок на валидност (DATETIME)
- сол (CHAR)
Стъпки за създаване на бисквитки:
- След успешно влизане създайте запис на бисквитка в базата данни под уникален идентификатор. Можете да го генерирате чрез hash_hmac('sha512', $token, $salt), където $token=uniqid($user_id, TRUE) и $salt=md5(mt_rand()).
- Съхранявайте „идентификатор на потребителя“, „време на изтичане“ и „сол“ заедно с „идентификатор на бисквитката“ в базата данни.
- Съхранявайте „идентификатор на бисквитка“ и „токен“ в бисквитка.
Стъпки за удостоверяване:
- Ако е намерена постоянна бисквитка, първо проверете дали записът е наличен в базата данни или не.
- Ако записът е наличен, проверете дали бисквитката изтича или не.
- Ако бисквитката не изтече, тогава потвърдете идентификатора на бисквитката от $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
- След като бисквитката бъде потвърдена, изтрийте я от базата данни и създайте нова бисквитка съгласно горните стъпки за създаване на бисквитки.
- Ако се установи, че бисквитката е невалидна, изчистете бисквитката от устройството и изтрийте всички други записи на бисквитки на потребителя от базата данни, забележете употребата за опит за кражба и продължете към процеса на ръчно влизане.
Бележки:
- Когато сесията е налична, игнорирайте проверката на бисквитката.
- След излизане изчистете бисквитката заедно със записа в базата данни.
- Никога не позволявайте на потребителите да изпълняват чувствителни заявки като промяна на паролата или да преглеждат информация за кредитна карта от постоянна бисквитка за вход. Извикайте парола за влизане и добавете флаг в сесията, за да разрешите всички по-нататъшни операции.