Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Antes de eu comentar o sistema de login eu preciso comentar as tabelas do mysql relacionadas e como fiz o sistema de cadastro.
**TABELA *users***
>
ID bigint(20) UNSIGNED auto_increment
user_md5_identity varchar(250)
user_login varchar(60)
user_pass varchar(64)
user_email varchar(100)
user_registered varchar(60)
user_status int(11)
display_name varchar(250)
main_language bigint(20)
Além dessa tabela existe outras que se relacionam com ela como userprofile, que contém as informações pessoais do usuário, mas não achei que seria relevante colocar a estrutura dela aqui também.
CADASTRO
Ao enviar o formulário eu salvo as informações de conta na tabela users e as pessoais em userprofile, nessa ordem. Protejo a consulta dando um anti-injection nas strings. A senha (user_pass) é criptografada com md5() e uso um hash por cima. $user_registered é a string que contém a data de inserção do usuário no formato do mysql. Depois que tenho as strings de cada campo do formulário eu crio a string "$user_md5_identity" que corresponde a coluna de mesmo nome na tabela users. O valor dessa coluna é um md5 da junção de user_login+user_email+user_registered+user_pass.
$user_md5_identity = md5($user_login.$user_email.$user_registered.$user_pass);
Vou explicar o por que dessa coluna na descrição de login abaixo.
LOGIN
Uma vez que você faz o login através do formulário e o login bate com a senha, eu salvo o session (ou o cookie se você marcar a opção de manter conectado), a única chave que salvo é $_SESSION["user"] e o valor é o user_md5_identity que peguei quando consultei se o login batia com a senha. Uma vez esse session no browser, eu verifico no php se existe algum usuario com o valor de $_SESSION["user"] na coluna user_md5_identity, se tiver eu registro o objeto $current_user com as informções da tabela users e userprofile. Eu criei esse user_md5_identity, porque não acredito na segurança dos cookies, e creio que dessa forma fica mais seguro e não salvo quaisquer informação do usuário seja login ou senha.
CONCLUSÃO
Não creio que as informações que passei seja o suficiente pra dizer se o meu sistema de login está seguro ou não porque há muitos outros fatores, e não sei até que ponto o uso dessa única sessão com uma chave única em md5 se faz relevante quanto a segurança. Gostaria de saber se isto melhora a segurança e se pudessem me perguntar quanto a outras informações sobre a segurança desse sistema para eu responder seria de muita valia pra mim, sendo que abri esse tópico porque é a primeira vez que utilizo um sistema de login feito por mim.
Carregando comentários...