O que são cookies? Por que você continua logado? ── O verdadeiro significado de «Aceitar cookies?»

O seu site de compras, a sua rede social, o sistema de ponto da sua empresa ── as páginas que você usa sem pensar recebem você ainda logado, mesmo depois de fechar o navegador e voltar no dia seguinte. E, no entanto, o servidor que trabalha por trás delas não está de fato lembrando de você. A realidade é o contrário: os servidores tendem a esquecer você ── mais precisamente, eles zeram a memória toda vez que respondem a uma requisição. A experiência cotidiana de «ser lembrado» é, olhando de perto, bem estranha.

Então por que continuamos logados? A resposta é o cookie ── o mesmo do aviso «Aceitar cookies?» que todo site mostra para você. Se algo da lista abaixo soa familiar, continue lendo.

  • Você clica no aviso de «Aceitar cookies?» no reflexo, toda vez, sem saber o que ele significa
  • Você não sabe explicar por que continua logado ── ou, ao contrário, por que de repente é deslogado
  • Você não sabe por que abrir o mesmo site em outro PC ou no celular mostra você deslogado
  • Alguém disse «tenta apagar os cookies» ── mas você não sabe bem o que apagar os cookies realmente faz

Este artigo faz duas promessas. ① Vamos manter o jargão no mínimo. ② Não vamos parar no funcionamento: chegaremos às decisões práticas ── o que clicar no aviso de consentimento e o que acontece se você apagar os cookies.

PerguntaOnde é respondida
O que significa «os servidores tendem a esquecer você»?§1
O que é exatamente um cookie?§2
Como funciona de verdade continuar logado?§3
O que «Aceitar cookies?» está perguntando de verdade?§4
Cookies são perigosos?§5
O que acontece se eu apagá-los?FAQ Q1
💡 Dica

Na retrospectiva da série, O que acontece entre digitar uma URL e a página aparecer?, acompanhamos um acesso como «a viagem de ida e volta de uma única requisição». Este artigo retoma a pergunta que vem em seguida ── se cada requisição e cada visita se completa sozinha, por que o site lembra de você?

1. O servidor esquece você toda vez ── HTTP foi projetado para não lembrar

1-1. A ida e volta de uma requisição se completa sozinha, toda vez

Quando você abre uma página web, uma requisição viaja pelo mundo, chega ao servidor e uma resposta volta (a viagem completa está em O que acontece entre digitar uma URL e a página aparecer?). Aqui está a parte que importa: essa ida e volta é a história inteira. Quando você clica em mais um link, é uma viagem totalmente nova ── e, do ponto de vista do servidor, uma requisição de um completo desconhecido.

Em metáfora: o servidor é um atendente de balcão cuja memória se apaga no momento em que cada atendimento termina. Visite dez vezes em um minuto, e dez vezes ele vai recebê-lo com «Bem-vindo! Primeira vez aqui?». Essa propriedade se chama ser sem estado (stateless) e faz parte do projeto básico do HTTP.

Parece um defeito, mas é proposital. Um balcão que não lembra pode atender qualquer pessoa com o mesmo procedimento ── simples, rápido e capaz de servir ao mesmo tempo multidões enormes do mundo inteiro. Abrir mão desde o início do trabalho de «lembrar» é uma das razões pelas quais a web pôde crescer tanto.

1-2. Então por que a web parece lembrar de você?

Mas isso cria uma contradição. Continuar logado, os itens esperando no seu carrinho, o seu modo escuro sobrevivendo entre as visitas ── se o atendente encontra você como desconhecido toda vez, nada disso deveria acontecer.

O balcão sem memória vs o que você realmente vive

 Como a engrenagem funciona (sem estado)
  Visita 1: Você ──> Servidor: «Prazer em conhecer»
  Visita 2: Você ──> Servidor: «Prazer em conhecer»   △ Zero memória, toda vez
  Visita 3: Você ──> Servidor: «Prazer em conhecer»

 O que você realmente vive
  Visita 1: Você faz login
  Visita 2: Continua logado            △ De algum jeito, lembram de você
  No dia seguinte: Continua logado

O dispositivo que fecha essa lacuna é o protagonista deste artigo: o cookie. A resposta em uma linha, adiantada ── quem lembra não é o servidor. É o seu navegador.

2. O que um cookie realmente é ── um cartão de sócio que a loja entrega a você

2-1. A loja desiste de lembrar e entrega um cartão ao cliente

Mesmo um atendente cuja memória se apaga consegue distinguir os clientes. O truque: fazer o cliente carregar um cartão e mostrá-lo a cada visita.

Isso é exatamente um cookie. Na primeira vez que você visita um site, o servidor anexa um bilhete à resposta ── «guarde isto, por favor» (Set-Cookie). O seu navegador guarda o cartão na carteira dele (uma área de armazenamento do seu PC) e, na próxima vez que enviar uma requisição para esse mesmo site, apresenta o cartão automaticamente. O atendente tem zero memória, mas uma olhada no cartão já diz «ah, o cliente que tem este cartão» ── uma loja que emite um cartão de sócio e um cliente que o mostra a cada visita.

O cartão em si é só uma cadeia curta de texto em uma nota. Não é um programa, então o cartão não consegue executar nada sozinho ── isso vai importar de novo no §5.

2-2. As regras do cartão ── mostrado apenas à loja que o emitiu, automaticamente

Os cartões de sócio seguem duas regras básicas.

Primeira: um cartão só é mostrado à loja que o emitiu. O cartão que o site A deu a você é anexado apenas às requisições que vão para o site A. O cartão de fidelidade do seu supermercado não vale nada na livraria (── essa é a regra no que diz respeito ao §2. No §4, veremos que a «brecha» dessa regra é exatamente o assunto do aviso de consentimento).

Segunda: cartões expiram. Há dois tipos: cartões jogados fora quando você fecha o navegador (cookies de sessão) e cartões que ficam na carteira até uma data marcada (cookies persistentes). A caixinha «manter conectado» é, em linhas gerais, uma escolha entre esses dois.

A ida e volta do cartão de sócio ── da emissão à apresentação automática

 Primeira visita
  Você ──«Prazer»──────────────────────>  Site A
  Você <──«Bem-vindo! Guarde este cartão»── Site A   △ Cartão emitido (Set-Cookie)

 Cada visita seguinte
  Você ──«Olá de novo» + [cartão] ──>  Site A         △ Anexado automaticamente pelo navegador
  Você <──«Bem-vindo de volta»──────── Site A

 Visitando outra loja
  Você ──«Prazer»─────────────────────>  Site B       △ O cartão do site A não é anexado

3. Como funciona continuar logado ── o cartão só carrega um número

3-1. Um bilhete numerado e um livro de registro ── o que um ID de sessão realmente é

Dissemos que «uma olhada no cartão basta» ── mas o cartão não tem escrito nem o seu nome nem a sua senha. O mecanismo de login é um degrau mais engenhoso.

Quando você digita a senha e o login dá certo, o servidor escreve uma linha no livro de registro dele ── «Cliente n.º 8472 = a sua conta, logado». Depois, entrega a você um bilhete numerado com apenas esse número de linha. Dali em diante, toda vez que o seu navegador apresenta o bilhete, o servidor procura o n.º 8472 no livro e sabe «é esta pessoa, já logada» ── esse número é o ID de sessão, e o livro é a sessão do lado do servidor.

Esse projeto tem duas vantagens. A sua senha nunca está no bilhete: mesmo que alguém veja o bilhete, a senha não vaza (FAQ Q5). E você não precisa redigitar a senha toda vez ── apresentar o bilhete continua a verificação de identidade por você. Aliás, esse «bilhete numerado» é um tipo do mecanismo chamado token ── o nosso guia Senha vs UUID vs Hash vs Token organiza como ele difere de senhas e hashes.

  1. 1LoginSenha verificada. O servidor escreve uma linha no livro de registro.
  2. 2Bilhete emitidoUm bilhete que carrega só o número da linha (o ID de sessão) é entregue como cookie.
  3. 3Cada visita seguinteO navegador apresenta o bilhete automaticamente. O servidor confere com o livro: «logado».
  4. 4O fimLogout (a linha do livro é apagada) ou o bilhete expira ── de volta a serem desconhecidos.

3-2. Os mistérios se resolvem sozinhos: deslogado de repente, e desconhecido em outro PC

Com o bilhete e o livro de registro, os mistérios do dia a dia se desfazem de uma vez.

Ser deslogado de repente significa que o bilhete ou o livro expirou. O bilhete passou da data, o servidor limpou linhas antigas do livro, um «sair de todos os dispositivos» apagou a sua linha, ou uma limpeza do navegador jogou o bilhete fora ── as causas variam, mas o evento é o mesmo: o bilhete e o livro não batem mais.

Aparecer deslogado em outro PC ou celular acontece porque o bilhete mora na carteira daquele navegador. Outra carteira, nenhum bilhete ── então um dispositivo novo significa começar de novo pela senha. Mesmo no mesmo PC, trocar de navegador faz de você um desconhecido, porque cada navegador guarda a própria carteira.

💡 Dica

O lado que guarda o livro de registro ── ou seja, o que um servidor realmente é ── rende um artigo inteiro. Planejamos cobrir isso em um post futuro.

4. O que «Aceitar cookies?» está perguntando de verdade ── o cartão de sócio da empresa de publicidade

4-1. Se todo cartão fosse de um site só, o aviso nunca teria existido

Até agora, todos os cartões eram «só para aquele site». O cartão do site A é mostrado apenas ao site A ── os cookies usados dentro desse limite se chamam cookies primários (first-party) e são eles que fazem funcionar logins, carrinhos e preferências lembradas. Sinceramente, se o mundo só tivesse esses, o aviso de consentimento nunca teria nascido.

4-2. Mostrar o mesmo cartão entre sites ── cookies de terceiros e rastreamento

O problema é que uma página não é construída só com «aquele site». Muitas páginas incorporam peças de outras empresas (geralmente de publicidade) ── espaços de anúncio, trechos de análise de audiência. Quando você abre a página, o seu navegador também envia requisições ao servidor da empresa de publicidade para buscar essas peças ── e, pela regra do §2, o cartão emitido pela empresa de publicidade é anexado às requisições que vão para a empresa de publicidade.

Aqui está a armadilha. E se o site de notícias, o de receitas e o de compras incorporarem peças da mesma empresa de publicidade? Então, abra o site que abrir, você está mostrando o mesmo e único «cartão de sócio da empresa de publicidade» aonde quer que vá. O livro de registro da empresa de publicidade acumula um rastro: «Pessoa n.º 551: notícias → receitas → a página de sapatos da loja» ── esse é o mecanismo real por trás de «o produto que eu vi ontem está me seguindo em outros sites», e os cartões que cruzam sites assim são os cookies de terceiros (third-party).

Primários vs de terceiros ── quem vê qual cartão

 Primários (o cartão do próprio site)
  Site de notícias ──> [cartão de notícias]   △ Fica dentro daquele site
  Site de compras  ──> [cartão de compras]

 De terceiros (o cartão da empresa de publicidade)
  Site de notícias ┐
  Site de receitas ├── em toda página ──> [o mesmo cartão da publicidade]
  Site de compras  ┘                      △ O rastro conecta os sites

É principalmente sobre isso que o aviso de «Aceitar cookies?» pergunta. Os cartões do próprio site (os que logins e preferências precisam) costumam ser tratados como «estritamente necessários», e o que de fato pedem que você escolha é aceitar ou não os cartões de publicidade e análise. Por isso, clicar em «Rejeitar» deixa as funções principais do site funcionando normalmente (FAQ Q3).

A propósito, o vento virou contra esse mecanismo de rastreamento: os fabricantes de navegador estão aposentando os cookies de terceiros, passo a passo. Pense nisso como um retorno à regra original do cartão ── mostrado apenas ao site que o emitiu ── e você já sabe o suficiente.

5. Cookies são perigosos? ── o cartão em si é inofensivo; o que importa é como ele é manuseado

5-1. Traçando a linha ── o lado inofensivo e o lado que pede cuidado

A imagem de «cookies = algo perigoso» é metade mal-entendido, metade verdade. Como no nosso artigo sobre HTTPS, vamos traçar a linha com uma tabela.

Pode ficar tranquilo ✅Pede cuidado ❌
O que o cartão éUma nota curta de texto. Não é um programa ── não consegue executar nada, estilo vírus──
Quem o vêMostrado apenas ao site que o emitiu (primário)──
Espionagem no caminhoO cartão viaja dentro da caixa secreta (HTTPS) e não pode ser lido no caminho──
Roubo do bilhete──Se outra pessoa usar o seu bilhete numerado, ela fica logada como você, sem senha ── o risco real de esquecer de sair em um PC compartilhado
Rastros de comportamento──Os cartões da empresa de publicidade (de terceiros) viram um registro do seu rastro entre sites (§4)
Apagá-los──Jogue fora todos os cartões e cada site volta a tratar você como desconhecido (FAQ Q1)

5-2. As conclusões práticas

Traduzir a tabela em comportamento cotidiano dá três regras.

Primeira ── em dispositivos compartilhados ou emprestados, sempre saia da conta ao terminar. O logout apaga a linha do livro, então mesmo um bilhete esquecido fica inútil. Só fechar o navegador pode deixar o bilhete na carteira.

Segunda ── nos avisos de consentimento, «apenas os necessários» ou «Rejeitar» está perfeitamente bem quando a opção existe. Os cartões do próprio site permanecem, então fazer login e comprar continuam funcionando como sempre.

Terceira ── não é preciso ter medo dos cookies em si. O cartão é uma nota, não um programa, e a caixa secreta o protege no trajeto. As duas coisas que merecem a sua atenção: não deixar outras pessoas manusearem fisicamente os seus bilhetes, e decidir quais livros de registro podem anotar o seu rastro.

Resumo ── a essência em 4 linhas

  • O servidor esquece, toda vez: HTTP é sem estado ── a memória do atendente se apaga após cada atendimento. Não lembrar é o que o torna rápido e massivamente escalável
  • Um cookie é um cartão de sócio: quem lembra é o navegador ── ele guarda o cartão que um site emitiu e o apresenta automaticamente, só para aquele site
  • Login é um bilhete numerado mais um livro de registro: o bilhete carrega só um número de linha (o ID de sessão), nunca a sua senha ── e «deslogado» significa que o bilhete e o livro pararam de bater
  • A verdadeira pergunta do aviso é o cartão da empresa de publicidade: os cartões do próprio site são «necessários»; o que você escolhe é o rastreamento entre sites, e rejeitá-lo deixa as funções principais funcionando

Para seguir na série ── a viagem completa de uma requisição está na retrospectiva da série, a caixa que protege o cartão no trajeto está no artigo sobre HTTPS, e como o bilhete numerado (token) difere de senhas e hashes está no guia de strings aleatórias.

FAQ

Q1. O que acontece se eu apagar todos os meus cookies?

A. Todos os sites voltam a tratar você como desconhecido ── concretamente, você é deslogado em todo lugar, o conteúdo do carrinho e as preferências de «não mostrar de novo» somem, e os avisos de consentimento voltam a aparecer. Nada quebra: faça login de novo e tudo funciona como antes. A razão de «tenta apagar os cookies» ser um conselho clássico de suporte é que isso zera qualquer descompasso entre bilhetes velhos e o livro de registro.

Q2. O que está realmente acontecendo no modo anônimo (navegação privada)?

A. Você está navegando com um crachá de visitante temporário. Cada cartão de sócio e cada bilhete numerado recebidos dentro da janela anônima expiram no momento em que você a fecha ── tudo é descartado de uma vez, e por isso nem histórico nem cartões ficam no seu dispositivo. Mas, enquanto usa o crachá, você parece exatamente o mesmo de sempre. Faça login dentro dessa janela, e o crachá passa a carregar, na prática, o seu nome: o livro de registro do site sabe que é você, como sempre. O que a rede vê no caminho também não muda. O modo anônimo não torna você anônimo ── a única coisa que muda é que nada fica para trás no seu dispositivo.

Q3. Se eu clicar em «Rejeitar» no aviso de consentimento, o site vai parar de funcionar?

A. Em quase todos os casos, ele continua funcionando normalmente. O aviso pergunta principalmente sobre os cartões de publicidade e análise (de terceiros); os cartões do próprio site, usados para login e carrinho, costumam ser classificados como «estritamente necessários» e não entram na rejeição (§4). Você ainda pode ver anúncios depois de rejeitar ── só que são anúncios não adaptados ao seu rastro.

Q4. Qual é a diferença entre cookies e cache? Eles sempre são apagados juntos.

A. Trabalhos completamente diferentes. O cookie é o cartão de sócio que diz quem você é; o cache é o reaproveitamento de pacotes (imagens e afins) que você já recebeu uma vez. Apagar também difere: apague os cookies e você é deslogado; limpe o cache e as páginas só carregam mais devagar por um tempo. Como o cache funciona ── a verdadeira história por trás de «atualizei mas nada mudou» ── rende um artigo próprio, planejado para um post futuro.

Q5. A minha senha de verdade fica guardada dentro de um cookie?

A. Não. Como o §3 mostrou, o bilhete carrega apenas um número de linha do livro (o ID de sessão); a sua senha é usada para verificar a identidade no momento do login e nunca viaja no bilhete. Dito isso, «não tem senha dentro, logo é seguro» também não se sustenta ── se o próprio bilhete numerado for roubado, quem o tiver pode agir como você até ele expirar. O básico para proteger os seus bilhetes: saia da conta em PCs compartilhados e não deixe outras pessoas manusearem o seu dispositivo.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *