terça-feira, maio 15, 2007

Tutorial de PHP - Parte 3: Sessões e Autenticação

Olá a todos futuros programadores de PHP!

Nesta terceira parte do nosso tutorial vamos tratar de dois dos assuntos mais importantes no que se trata de programação web: sessões e autenticação.

Em todo o lugar vemos telas de login, cadastros e senhas (Às vezes são tantos que não é raro nós trocarmos ou simplesmente esquecermos). Tudo isso para proporcionar segurança, restringir o acesso a determinado conteúdo ou então manter a privacidade e individualidade de acesso a um serviço.

Veremos que com PHP é bem fácil implementar essas políticas de acesso.
  • Sessões:
Sessões são usadas para guardar dados enquanto a janela do browser estiver aberta. São geralmente usadas para manter dados como nome do usuário, tipo do usuário (se é o administrador ou se é um visitante não cadastrado, por exemplo), entre outros dados importantes. Dica: NUNCA COLOQUE A SENHA NA SESSÃO. VOCÊ SÓ PRECISA DELA PARA AUTENTICAÇÃO!
Para iniciar uma sessão no PHP usamos a função:

 session_start(); 


Se quisermos destruir a sessão (no caso de o usuário ter feito logoff), usamos a função:

 session_destroy(); 


Agora precisamos apenas setar os valores que ficarão na sessão. No PHP os valores são armazenados em um vetor associativo chamado $_SESSION. As associações são feitas com pares chave e valor. Por exemplo, vamos setar o nome do usuário e a permissão dele, e colocar esses dados na seção. Vamos buscar esses dados a partir de um formulário fictício, via POST.

< ?php
session_start(); //iniciamos a sessão

$_SESSION['usuario'] = $_POST['usuario']; //colocamos na sessão o valor do campo usuário vindo do formulário

$_SESSION['permissao'] = $_POST['admin']; //da mesma forma setamos suas permissões

header("location:pagina_principal.php"); //Redirecionamos para a pagina principal

? >


Com isso feito, podemos acessar as variáveis da sessão de qualquer lugar da nossa aplicação através do vetor $_SESSION.

  • Autenticação e Segurança:
Os princípios vistos até agora já lhe dão uma boa base de como funciona o processo de autenticação na web. Agora vou dar umas dicas para otimizar a segurança do seu site, tornando-o mais confiável para os seus visitantes.
    • Nunca passe dados confidenciais via GET. Isso pode parecer meio óbvio para os mais experientes, mas é uma falha comum que pode ser desastrosa. Sempre use o método POST em sistemas de login, por exemplo.
    • Quando estiver trabalhando com banco de dados, nunca armazene as senhas de seus usuários como elas são. Por exemplo: Digamos que a senha de um usuário seja 123456. NÃO armazene no banco 123456. O PHP dispõe de funções de hash (criptografia sem volta) que promove maior segurança para armazenar dados críticos. Aplicando uma dessas funções em 123456 obteríamos "AssjUBnsuabBHb1513AdsDbkhjNKJokp", por exemplo. Esse valor criptografado seria armazenado no banco, e na hora do login a função de hash seria aplicada à senha digitada e aí então seria feita a comparação entre os dois valores criptografados. Ou seja, nenhum administrador de banco de dados mal intencionado poderá olhar as senhas dos seus usuários.

É isso pessoal, espero que estejam gostando dos tutoriais desta série. Qualquer dúvida é só comentar.




5 comentários:

Anônimo disse...

Cara, bacana o tutorial
Como faço pra limitar a sessão do cara, ou seja, depois de um tempo x, destruir os dados da sessão do cara. preciso disso pra não congestionar o meu site.

Anônimo disse...

Olá sou estudante e estas dicas sobre sessão ajudaram muito preciso fazer um trabalho em php e estava com algumas duvidas sobre sessão.
Obrigado...

Anônimo disse...

legal o tutorial, mas gostaria de saber como consigo gravar o conteudo da sessão em um banco de dados.

Juliana disse...

Mãozinha??Mãozonaaaaa..ajuda e muito...Obrigada!

Anônimo disse...

valeu pela tuto, abraços.