Cookies – Protocolo HTTP

Neste artigo falaremos sobre os cookies HTTP, uma conjunto de dados que permite ao servidor/site fornecer serviços direcionados aos seus usuários, rastreamento e identificação de seus clientes. Para saber como funciona o protocolo HTTP leia o artigo: HTTP – Protocolo de comunicação WEB.

Cookies HTTP

Como já mencionado, o protocolo HTTP é stateless. Dessa forma, o estado de conexão não é armazenado. Contudo, haverá momentos em que será útil, ou ainda preciso identificar de alguma forma seus clientes.

Neste cenário entra o conceito de cookies. 

A crescente utilização de lojas virtuais, e aplicações web trazem a necessidade de manter dados persistentes dos seus clientes. Qual então é o papel dos cookies neste cenário?

Eles proveem a capacidade de rastreamento, identificação e/ou fornecimento de funções para o cliente.  

Definido pela RFC 6265, as informações contidas nos cookies variam de acordo com histórico de navegação do usuário. Contudo, a característica dos cookies de guardar informações dos usuários logo foi utilizada no monitoramento de usuários. 

Comunicação com cookies 

Ao se conectar a um site que utiliza cookies http, uma linha de cabeçalho cookie é enviada na resposta http do servidor. De posse desse cabeçalho o cliente armazena este cookie. 

Sempre que houver um acesso página relacionada, o cliente enviará o valor armazenado do cookie correspondente à página. 

Para que a conexão consiga manter dados persistentes, uma estrutura é necessária. Dessa forma, temos três componentes que compõem os cookies: cookie hearder line, cookie file, e informações do cookie no backend. 

Cookie header line está presente nas mensagens HTTP, request e response. Nestes campos a troca de mensagens irá identificar o cliente.

Caso seja a primeira vez que o usuário se conecte, este receberá uma identificação e o arquivo do cliente será utilizado.  

Consequentemente, este arquivo do cliente é conhecido como cookie file. Este arquivo é mantido no cliente, contudo, gerenciado pelo browser. O cookie file armazena as informações no cliente.

Essas informações são identificações relacionadas aos sites visitados, informações para manter usuário logado entre outras informações. 

Estas informações podem ainda ser utilizadas em ataques ao usuário. Falaremos no próximo tópico sobre um possível cenário de roubo de informações.

Figura 1 – Exemplificação de cookie file

Claro que essas informações devem ser armazenadas tanto no cliente como no servidor. Portanto, além do cookie file o servidor tem o banco de dados back-end no site.

Neste banco de dados, deve ter a identificação e demais informações relacionadas aos seus clientes. 

Cookie e privacidade 

O cookie pode ser considerado um violador de privacidade, pois através dos cookies empresas ou pessoas podem traçar um perfil de navegação dos usuários. 

Por esse motivo, a LGPD trouxe diretrizes mais rígidas para as empresas que lidam com dados de seus usuários. Atualmente o site deve informar aos clientes a utilização dos cookies.

Além disso, deve-se solicitar seu consentimento na utilização dos dados. Contudo, esse consentimento não é obrigatório. 

Há ainda um uso ilegítimo destes dados. Hackers também podem utilizar os cookies para obter informações particulares de suas vítimas.  Com isso pode acontecer? 

Imagine que você mantêm seus sites logados em sua máquina. Isso facilita a vida, visto que não precisamos entrar com login e senha a todo momento. Mas pense sobre o assunto… essas informações ficam armazenadas nos cookies file.

No arquivo há as informações que o relacionam o usuário a uma sessão do respectivo site.

Ok, mas como poderiam utilizar meus cookies files? Continuando em nosso exemplo, imagine que há uma falha de segurança em sua máquina e um usuário malicioso consegue acesso aos seus dados.

De posse de seu cookie file, o agente malicioso poderá logar em sites utilizando as informações do usuário legítimo. Evitar deixar a conta logada, impede o armazenamento de informações de gerenciamento de sessão.

Como funciona o envio de cookies em uma conexão HTTP? 

Uma mensagem request HTTP é enviada quando um usuário ao iniciar uma conexão HTTP. Ao receber a mensagem request, haverá uma verificação no banco de dados do servidor.

Consequentemente, caso seja o primeiro acesso do usuário ao site não haverá um ID associado a aquele usuário. Assim, uma atualização com inserção no banco de dados ocorrerá.

Posteriormente, o servidor irá enviar uma mensagem response setando o user ID pelo cookie header line. Esse user ID, juntamente com outras informações, será inserido no cookie file que é gerenciado pelo browser do cliente.  

Observamos a exemplificação desse processo pela animação no vídeo abaixo.

Primeiro acesso ao site e atribuição de cookies

Para saber mais sobre o tema

Referências Bibliográficas

Juliana Mascarenhas

Data Scientist and Master in Computer Modeling by LNCC.
Computer Engineer

Simplificando Redes nas redes sociais