Rodrigo Graça 0 Posted April 2, 2011 Report Share Posted April 2, 2011 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. Link to post Share on other sites
kareka 0 Posted April 2, 2011 Report Share Posted April 2, 2011 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"); ?> Link to post Share on other sites
Rodrigo Graça 0 Posted April 2, 2011 Author Report Share Posted April 2, 2011 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 é? Link to post Share on other sites
Rodrigo Graça 0 Posted April 2, 2011 Author Report Share Posted April 2, 2011 Vou colocar aqui o link para baixarem o código caso queiram dar uma olhada. http://hotfile.com/dl/113053894/1ee9901/Escola.rar.html Link to post Share on other sites
kareka 0 Posted April 2, 2011 Report Share Posted April 2, 2011 Não , não ..dá uma olhada aqui para ficares a perceber melhor do assunto http://www.w3schools.com/PHP/php_cookies.asp <?php include("assinatura.txt"); ?> Link to post Share on other sites
Rodrigo Graça 0 Posted April 2, 2011 Author Report Share Posted April 2, 2011 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. Link to post Share on other sites
yoda 126 Posted April 2, 2011 Report Share Posted April 2, 2011 Quem é que vai andar a copiar cookies de um pc para o outro? before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to post Share on other sites
scorch 12 Posted April 2, 2011 Report Share Posted April 2, 2011 @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. PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum. Link to post Share on other sites
Rodrigo Graça 0 Posted April 2, 2011 Author Report Share Posted April 2, 2011 @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. Link to post Share on other sites
scorch 12 Posted April 2, 2011 Report Share Posted April 2, 2011 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. PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum. Link to post Share on other sites
Rodrigo Graça 0 Posted April 2, 2011 Author Report Share Posted April 2, 2011 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? Link to post Share on other sites
Rodrigo Graça 0 Posted April 2, 2011 Author Report Share Posted April 2, 2011 Que era aquilo do SMF não percebi. Link to post Share on other sites
yoda 126 Posted April 2, 2011 Report Share Posted April 2, 2011 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? before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to post Share on other sites
Rodrigo Graça 0 Posted April 2, 2011 Author Report Share Posted April 2, 2011 @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) Link to post Share on other sites
scorch 12 Posted April 2, 2011 Report Share Posted April 2, 2011 O SMF é o sistema de Fórum que nós usamos, escrito em PHP. Quanto ao md5, não é preciso tanta coisa. PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum. Link to post Share on other sites
yoda 126 Posted April 2, 2011 Report Share Posted April 2, 2011 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) Mais facilmente te sacam as passwords da BD do que cookies, acredita. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to post Share on other sites
Rodrigo Graça 0 Posted April 2, 2011 Author Report Share Posted April 2, 2011 O md5 ou o session_id era só para criar uma coisa assim louca para ninguém descobrir. Link to post Share on other sites
Rodrigo Graça 0 Posted April 2, 2011 Author Report Share Posted April 2, 2011 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 Link to post Share on other sites
yoda 126 Posted April 2, 2011 Report Share Posted April 2, 2011 Eu acho que deves ler o manual before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to post Share on other sites
Rodrigo Graça 0 Posted April 2, 2011 Author Report Share Posted April 2, 2011 @yoda porque ? já existe essa opção ? Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now