DEV Community

Ortiz de Arcanjo António David
Ortiz de Arcanjo António David

Posted on

4

Sessões (Sessions)

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

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more