Pergunta

Está armazenando nome de usuário & senha do usuário em um cookie uma boa prática? Eu realmente quero saber como grandes sites comoFacebook, Digg, Twitter) lidar com isso. Meu código é assim:

<?php

$username = mysql_real_escape_string($_POST['username']);
$password = md5($_POST['password']);

?>

Depois de cada login bem -sucedido, eu guardo o $username e a $password (MD5) em um biscoito. E regenerar o ID da sessão com session_regenerate_id()


E para autenticar o usuário, verifico se existe uma sessão de login, caso contrário, autentico os cookies.

Alguma ideia? Obrigado

Foi útil?

Solução

Estou um pouco confuso - você está usando sessões de PHP ou cookies?

Se você armazenar os dados em uma sessão ($_SESSION['username'] = 'Tom' etc.), esses dados não são armazenados no cookie do usuário.

Se você armazenar os dados em um cookie separado (para algo como login automático), convém armazenar um ID aleatório diferente e procurar o ID do usuário uma tabela de banco de dados.

autologins
----------
key (random hash)
user_id
expires

Outras dicas

Apenas um MD5 não é suficiente, você deve pelo menos incluir um 'sal' aleatório (uma pequena série aleatória de caracteres) que você armazena no seu banco de dados.

EDIT: BTW, você armazenou o texto simples de senha ou criptografado? Isso pode ser um risco de segurança maior.

A prática padrão é dar ao usuário um ID da sessão em um cookie, ou usando sessões de PHP. Armazenar o nome de usuário e o hash de senha em um cookie ainda é feito por alguns sites, mas eu prefiro o primeiro. Ele permite que você dê aos usuários mais controle sobre seus logins, para que eles possam ver quantas sessões eles têm e de qual IP eles são, por exemplo - consulte o Gmail para um bom exemplo.

Sobre o assunto de sais e hash, você deve armazenar os hashes de senha no banco de dados salgados. Idealmente, o sal deve ser diferente para cada usuário. No caso de seu banco de dados ser roubado ou exposto, isso tornará muito mais difícil para um invasor obter senhas (se todas usassem o mesmo sal, poderiam gerar mesas de arco -íris para esse sal, o que leva muito tempo, mas deixaria eles então quebram senhas rapidamente). Para segurança, o sal também deve conter alguns caracteres não alfanuméricos, como %$ &^.

A resposta de Joel L é boa. A única coisa que acrescentaria é que, em vez de um ID aleatório, você pode adicionar algumas informações extras que identificam o usuário para torná -lo mais seguro.

Por exemplo, use um hash do endereço IP do usuário e um sal, fornece segurança extra contra alguém roubando ou cheirando o cookie de segurança do usuário.

Suspeito que o Twitter use algo assim, e é por isso que você só pode ser conectado permanentemente ao Twitter a partir de um computador por vez.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top