Manter sessão iniciada. (Login's) - PHP - Portugal-a-Programar
Manter sessão iniciada. (Login's)
Estava eu a fazer um pequeno trabalho em PHP quando me vieram á cabeça duas ideias: a primeira foi meter um re-captcha no formulário de registo e a segunda ideia foi meter no login uma opção para manter sessão iniciada.
A primeira ideia eu conseguir fazer na boa mas a segunda não sei como fazer e já dei uma googlada e nada o mais parecido que apareceu foi um tópico aqui do P@P mas não esclarecia a minha duvida.
Topico: (http://www.portugal-a-programar.pt/index.php?showtopic=39850)
Então o que queria saber é como é que eu faço para que a pessoa mantenha a sessão iniciada? O meu sistema é muito simples tem uma pagina para listar uma para apagar uma para editar uma para registar e uma para login. O login verifica se a pessoa colocou o nome e password bem e depois cria a sessão.
A primeira coisa a fazer é criares uma checkbox para verificar se o utilizador quer que a sua sessão se mantenha iniciada .
Quando o form for submetido e os dados validados crias uma cookie para esse utilizador que vai ser guardada na bd de utilizadores.
Ao ser aberta novamente a página , basta que verificares a que user pertence a cookie e iniciar sessão .
Já criei a parte do design com a checkbox a parte do cookie é que não percebia mas nao percebo na mesma uma coisa. Então mas se eu criar um cookie ele não pode ser copiado para outro PC e a pessoa terá sessão iniciada lá não é?
Vou colocar aqui o link para baixarem o código caso queiram dar uma olhada.
http://hotfile.com/dl/113053894/1ee9901/Escola.rar.html
Não , não ..dá uma olhada aqui para ficares a perceber melhor do assunto http://www.w3schools.com/PHP/php_cookies.asp
Continuo sem perceber. Tipo pelo que já ouvi dizer os cookies dão para copiar de um PC para outro certo? Isso faria com que a pessoa tivesse sessão iniciada lá se usarmos os cookies para controlar a sessão.
Quem é que vai andar a copiar cookies de um pc para o outro?
@Rodrigo Graça A pessoa não vai fazer isso, ela própria. Isso apenas aconteceria se a pessoa tivesse um vírus no computador, que lhe roubasse os cookies e os enviasse a alguém, ou se a tua aplicação tiver alguma falha de XSS que permita a um utilizador mal intencionado inserir JavaScript numa página supostamente segura, e através desse JavaScript obter o Cookie.
Tens de te lembrar é que no cookie não basta meter apenas o ID do utilizador.
Isso do XSS deve ter porque nem me preocupei com isso. E isto é um trabalho que é uma coisa simples não em tenho de preocupar com segurança mas é a duvida que tenho porque sempre ouvi dizer que não se devia guardar informações relativamente a login's nos PC's atravez dos cookies porque eles podiam ser "forjados".
Como disse acima é um pequeno trabalho ninguém vai andar a tentar copiar os cookies mas não me parece certo fazer assim sabendo que tem essa falha tão simples de ser usada.
Repara, todos os sites com login usam cookies, ou praticamente todos. O SMF usa. Muitas vezes usamos cookies e nem damos por isso, por exemplo, quando usamos sessões no PHP, elas usam cookies, mas criam uma camada por cima que faz as coisas mais "secantes" por nós, como a segurança, etc...
Para usares cookies, por exemplo, podes ter uma tabela na Base de Dados que sempre que um user inicia sessão, gera uma chave aleatória grande (com 20 caracteres, incluindo números, caracteres especiais, tudo), o que torna quase impossível de ser descoberta, e associa-la na BD a um ID de utilizador.
Assim, ele verifica se a chave guardada no cookie é igual à da base de dados, e se for, aceita-a. Se não for, não inicia sessão. E isto torna praticamente impossível, ou seja, na prática, impossível de descobrir a chave gerada e falsificar a sessão.
Essa chave poderia ser criada através de um numero aleatório e depois encriptado em md5() o que ficaria fiche ou também poderíamos utilizar o session_id() para obter uma coisa interessante quase impossível de ser descoberta. Mas se algum fosse ao PC dessa pessoa e copiasse o cookie para uma Pen e mete-se no seu PC puff entrava não era?
Que era aquilo do SMF não percebi.
Ninguém se preocupa com isso. As sessões teem tempo para expirar por alguma razão. Além disso, há formas de evitar que isso aconteça (não que alguém se preocupe com isso .. )
Achas mesmo que esse "problema" vale as chatisses?
"Achas mesmo que esse "problema" vale as chatisses?"
Para este problema não mas para outros sistemas e etc acho que sim orque isso é a falha mais basica de todas! (Do meu ponto de vista)
O SMF é o sistema de Fórum que nós usamos, escrito em PHP. Quanto ao md5, não é preciso tanta coisa.
Mais facilmente te sacam as passwords da BD do que cookies, acredita.
O md5 ou o session_id era só para criar uma coisa assim louca para ninguém descobrir.
Afinal como eu faço para que o login se mantenha eu gostava de saber a logica. XD
Já agora quando é que ele não se mantém?
Eu acho que quem criou o PHP deveria fazer na variável $_SESSION o mesmo que fizeram para os cookies que é poder definir o seu tempo de vida assim nós definíamos o tempo de vida que a sessão iria durar e caso queiramos manter a sessão era só por um tempo do tipo 100 anos