Jump to content
Rodrigo Graça

Manter sessão iniciada. (Login's)

Recommended Posts

Rodrigo Graça

Bom dia a todos.

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.

Sem outro assunto os meus cordiais cumprimentos.  :cheesygrin:

Share this post


Link to post
Share on other sites
kareka

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.

setcookie(name, value, expire, path, domain);

Ao ser aberta novamente a página , basta que verificares a que user pertence a cookie e iniciar sessão .


<?php include("assinatura.txt"); ?>

Share this post


Link to post
Share on other sites
Rodrigo Graça

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 é?

Share this post


Link to post
Share on other sites
Rodrigo Graça

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.

Share this post


Link to post
Share on other sites
scorch

@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. :confused:


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
Rodrigo Graça

@Scorch

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".

@Yoda

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.

Share this post


Link to post
Share on other sites
scorch

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. :confused:

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. :D


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
Rodrigo Graça

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?

Share this post


Link to post
Share on other sites
Rodrigo Graça

@Yoda

"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)

Share this post


Link to post
Share on other sites
scorch

O SMF é o sistema de Fórum que nós usamos, escrito em PHP. Quanto ao md5, não é preciso tanta coisa. :confused:


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
Rodrigo Graça

O md5 ou o session_id era só para criar uma coisa assim louca para ninguém descobrir.

Share this post


Link to post
Share on other sites
Rodrigo Graça

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

Share this post


Link to post
Share on other sites
Rodrigo Graça

Então como eu faço para que a sessão se mantenha iniciada?

Share this post


Link to post
Share on other sites
Rodrigo Graça

Depois verificava se existia o cookie se existisse mas a sessão não existi-se eu criava-o certo?

E quando faço logout destru-o os dois certo?

E quando ele entra e cria a sessão cria tambem o cookie certo?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.