Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como implementar o recurso lembrar de mim?


Digamos que o nome da tabela de banco de dados para o cookie persistente seja pcookies com as seguintes colunas:
  • cookie_id (CHAR)
  • user_id (INT)
  • expiração (DATETIME)
  • sal (CHAR)

Etapas de criação de cookies:
  1. Após o login bem-sucedido, crie um registro de cookie no banco de dados com um ID exclusivo. Você pode gerá-lo por hash_hmac('sha512', $token, $salt) onde $token=uniqid($user_id, TRUE) e $salt=md5(mt_rand()).
  2. Armazene 'id do usuário', 'tempo de expiração' e 'sal' junto com o 'id do cookie' no banco de dados.
  3. Armazene 'id do cookie' e 'token' no cookie.

Etapas de autenticação:
  1. Se for encontrado um cookie persistente, primeiro verifique se o registro está disponível no banco de dados ou não.
  2. Se o registro estiver disponível, verifique se o cookie expira ou não.
  3. Se o cookie não expirar, valide o ID do cookie por $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
  4. Depois que o cookie for validado, exclua-o do banco de dados e crie um novo cookie de acordo com as etapas de criação de cookies acima.
  5. Se o cookie for considerado inválido, limpe o cookie do dispositivo e exclua todos os outros registros de cookies do usuário do banco de dados, observe o uso sobre uma tentativa de roubo e prossiga para o processo de login manual.

Observações:
  • Quando a sessão estiver disponível, ignore a verificação do cookie.
  • Após o logout, limpe o cookie junto com o registro do banco de dados.
  • Nunca permita que os usuários executem solicitações confidenciais, como alteração de senha ou visualizem informações de cartão de crédito de um login de cookie persistente. Invoque a senha para fazer login e adicione um sinalizador na sessão para permitir todas as operações posteriores.