Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да внедря функцията запомни ме?

Кажете, че името на таблицата на базата данни за постоянна бисквитка е pcookies със следните колони:

  • cookie_id (CHAR)
  • user_id (INT)
  • срок на валидност (DATETIME)
  • сол (CHAR)

Стъпки за създаване на бисквитки:

  1. След успешно влизане създайте запис на бисквитка в базата данни под уникален идентификатор. Можете да го генерирате чрез hash_hmac('sha512', $token, $salt), където $token=uniqid($user_id, TRUE) и $salt=md5(mt_rand()).
  2. Съхранявайте „идентификатор на потребителя“, „време на изтичане“ и „сол“ заедно с „идентификатор на бисквитката“ в базата данни.
  3. Съхранявайте „идентификатор на бисквитка“ и „токен“ в бисквитка.

Стъпки за удостоверяване:

  1. Ако е намерена постоянна бисквитка, първо проверете дали записът е наличен в базата данни или не.
  2. Ако записът е наличен, проверете дали бисквитката изтича или не.
  3. Ако бисквитката не изтече, тогава потвърдете идентификатора на бисквитката от $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
  4. След като бисквитката бъде потвърдена, изтрийте я от базата данни и създайте нова бисквитка съгласно горните стъпки за създаване на бисквитки.
  5. Ако се установи, че бисквитката е невалидна, изчистете бисквитката от устройството и изтрийте всички други записи на бисквитки на потребителя от базата данни, забележете употребата за опит за кражба и продължете към процеса на ръчно влизане.

Бележки:

  • Когато сесията е налична, игнорирайте проверката на бисквитката.
  • След излизане изчистете бисквитката заедно със записа в базата данни.
  • Никога не позволявайте на потребителите да изпълняват чувствителни заявки като промяна на паролата или да преглеждат информация за кредитна карта от постоянна бисквитка за вход. Извикайте парола за влизане и добавете флаг в сесията, за да разрешите всички по-нататъшни операции.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. активно сумиране на записи в codeigniter

  2. PHP 5.4 PDO не можа да се свърже с MySQL 4.1+, използвайки старата несигурна автентификация

  3. Пренаредете редовете в MySQL таблица

  4. Как да проверите размера на базата данни и таблиците на MySQL

  5. Как да актуализирам набора идентификатор от 1?