Sessões são pequenos ficheiros de texto guardados num directório específico do servidor.
O protocolo HTTP é conhecido por não guardar o estado (Stateless). Durante as requisições o navegador não consegue identificar os usuários e o que fazem.
A sessão é usada para armazenar e passar informações de uma página para outra temporariamente. Por padrão, as variáveis de sessão duram até que o usuário feche o navegador.
Principais aplicações de Sessions
- Criação de carrinhos de compra;
- Autenticação de Usuários;
- Personalização no site (imagem, cor de fundo, mensagens) de acordo ao Usuário;
- Tratamento de Ataques CSRF;
- Contagem de visitas num site;
- Atribuição de tempo de actividade de um usuário (session timeout);
- Outras aplicações que necessitam de identificar mudanças por usuários;
Bibliotecas para tratamento de Sessões
- Python: requests, Flask-Session
- PHP: $_SESSION (nativo);
- Elixir: Plug.Session
- C#: Microsoft.AspNetCore.Http
- Java: javax.servlet.http.HttpSession.
Vantagens
- Facilidade de implementação;
- Ajuda o HTTP no armazenamento de estado;
- Armazena configurações que podem ser alteradas pelo usuário.
Desvantagens
- Necessitam de mais memória do que variáveis locais;
- Valores colocados em na Session precisam ser serializáveis;
- Se tratados da forma incorrecta, pode revelar falhas de segurança;
- Quando mal implementadas pode causar o sequestro de sessões.
Exemplos
Usando a Linguagem PHP, vamos apresentar 2 casos de uso da sessão:
- Implementação da Autenticação de usuário, (login, reconhecimento de usuário e logout).
- Tratamento de ataques CSRF.
Código Fonte
https://github.com/ortizdavid/sessions-app