O que são cookies? Como os sites se lembram de si
Um cookie é um pequeno texto que um site pede ao seu navegador para guardar e depois enviar de volta em cada visita posterior a esse site. É assim que um site «se lembra» de si: que tem sessão iniciada, o que está no carrinho, que idioma escolheu. Os cookies são apenas dados, não programas, mas, como podem identificá-lo, importam tanto para a segurança como para a privacidade.
Porque é que importa quando cria com IA
Os cookies estão por baixo de várias funcionalidades que vai pedir a um criador com IA, muitas vezes sem que a palavra «cookie» chegue a surgir:
- Início de sessão. Na maioria das aplicações web, «manter sessão iniciada» significa um cookie de sessão. A forma como esse cookie está configurado decide quão fácil é roubá-lo.
- Carrinhos e preferências. Um cesto que sobrevive a um refresh da página depende muitas vezes de um cookie ou do armazenamento do navegador.
- Análise e anúncios. Adicionar o Google Analytics, o pixel da Meta ou um widget de chat costuma acrescentar cookies de outras empresas.
- Avisos legais. Em muitos sítios, alguns cookies precisam do consentimento do visitante antes, e é daí que vêm os banners de cookies.
Se souber que cookies a sua aplicação define e porquê, consegue fazer melhores escolhas sobre definições de segurança, consentimento e a sua política de privacidade.
Uma analogia do dia a dia
Pense numa senha de guarda-roupa. Entrega o seu casaco e recebe um talão numerado. O talão não contém o casaco — só um número. Sempre que volta ao balcão, mostra o talão, e o funcionário sabe qual é o seu casaco.
Um cookie de sessão funciona da mesma forma. Quando inicia sessão, o servidor guarda os seus dados do lado dele e dá ao seu navegador um talão — um ID aleatório e longo. O navegador mostra esse talão em cada pedido, e o servidor procura quem é. Quem copiar o talão pode levantar o casaco, por isso os cookies de início de sessão precisam de proteção.
Como funciona um cookie na prática
- Visita um site. A resposta do servidor inclui um cabeçalho como
Set-Cookie: session_id=8f3k...; HttpOnly; Secure; SameSite=Lax. - O seu navegador guarda-o, associado ao domínio desse site.
- Em cada pedido posterior ao mesmo site, o navegador acrescenta automaticamente
Cookie: session_id=8f3k.... - O servidor lê-o e sabe que é você.
O JavaScript da página também pode criar cookies, mas os mais importantes — as sessões de início de sessão — devem ser definidos pelo servidor e escondidos do JavaScript.
Tipos de cookies
| Tipo | O que significa | Exemplo |
|---|---|---|
| Cookie de sessão | Sem data de expiração; apagado quando a sessão do navegador termina | Um passo de checkout de curta duração |
| Cookie persistente | Tem data de expiração (Expires ou Max-Age) e sobrevive a reinícios | «Lembrar-me durante 30 dias» |
| Primeira parte | Definido pelo site que aparece na barra de endereços | O seu início de sessão nesse site |
| Terceira parte | Definido por outro domínio incorporado na página | O identificador de rastreio de uma rede de anúncios |
| Estritamente necessários | Necessários para um serviço que o utilizador pediu | Sessão de início de sessão, carrinho de compras |
| Não essenciais | Úteis para o dono do site, mas não indispensáveis | Análise, publicidade, testes A/B |
Os navegadores têm restringido cada vez mais os cookies de terceiros, porque são usados para seguir as pessoas entre sites. Vários navegadores importantes bloqueiam agora muitos deles por defeito, e os detalhes continuam a mudar, por isso não construa nada importante em cookies de terceiros.
Um exemplo prático: uma pequena loja online
Imagine que construiu uma loja que vende velas artesanais. Estes são os cookies que uma versão sensata definiria, e porquê.
session — definido quando o proprietário ou um cliente inicia sessão. Contém apenas um ID aleatório; o servidor guarda os dados reais da sessão. Definições: HttpOnly (os scripts da página não o conseguem ler), Secure (só é enviado através de HTTPS), SameSite=Lax (não é enviado na maioria dos pedidos iniciados por outros sites). Estritamente necessário.
cart_id — permite a um visitante que não iniciou sessão manter o seu cesto. Aponta para um carrinho guardado na base de dados. Estritamente necessário, porque o visitante pediu para adicionar coisas a um carrinho.
theme — memoriza o modo escuro. Isto poderia ser um cookie, mas nunca precisa de chegar ao servidor, por isso o localStorage do navegador é mais simples.
Cookies de análise — acrescentados se instalar uma ferramenta de análise. São não essenciais. Na UE e no Reino Unido, normalmente exigem consentimento antes de serem definidos, por isso o script de análise deve esperar até o visitante clicar em «Aceitar».
Repare no que a loja não guarda em cookies: o nome, a morada ou os dados do cartão do cliente. Os cookies viajam em cada pedido e ficam no dispositivo do utilizador, por isso devem conter identificadores, não dados pessoais.
Termos comuns explicados
| Termo | O que significa |
|---|---|
| Cookie | Um par nome-valor que o navegador guarda e envia de volta ao site. |
Set-Cookie | O cabeçalho de resposta que um servidor usa para criar ou atualizar um cookie. |
| Sessão | O registo do servidor de um utilizador com sessão iniciada, ligado a um ID de cookie. |
HttpOnly | Impede que o JavaScript da página leia o cookie, o que limita os danos de scripts injetados. |
Secure | O cookie só é enviado através de ligações HTTPS cifradas. |
SameSite | Controla se o cookie é enviado em pedidos de outros sites (Strict, Lax ou None). |
Expires / Max-Age | Quando o cookie deve ser apagado. |
| Domain / Path | Quais os endereços do site que recebem o cookie. |
| localStorage | Armazenamento do navegador que o código da página pode ler, mas que não é enviado automaticamente ao servidor. |
| XSS | Cross-site scripting: um script de um atacante a correr na sua página, que pode tentar roubar dados. |
| CSRF | Cross-site request forgery: outro site que engana o navegador para enviar um pedido com os seus cookies. |
| Consentimento de cookies | Pedir a permissão dos visitantes antes de definir cookies não essenciais. |
Erros comuns e ideias erradas
- «Os cookies são vírus.» São texto simples. Não conseguem executar código no seu computador.
- Colocar dados sensíveis em cookies. Guarde um ID aleatório e mantenha os dados no servidor.
- Tokens de início de sessão no localStorage. Qualquer script a correr na página pode ler o localStorage, incluindo um injetado. Um cookie
HttpOnlynão pode ser lido pelos scripts da página. - Falta de
SecureeHttpOnly. Estas duas flags são baratas e fecham falhas comuns. - Assumir que um banner cobre tudo. Um banner que carrega a análise antes de alguém clicar em «Aceitar» não faz o seu trabalho.
- Esquecer o fim de sessão. Terminar sessão deve apagar o cookie e encerrar a sessão no servidor, para que um cookie copiado deixe de funcionar.
- «Se não uso cookies, as regras de privacidade não se aplicam.» Regras como o RGPD abrangem os dados pessoais onde quer que estejam guardados — armazenamento local, impressões digitais do dispositivo e registos do servidor incluídos.
O que pedir ao seu criador com IA
- «Liste todos os cookies que a aplicação define, para que servem, quanto tempo duram e se são estritamente necessários.»
- «Use um cookie
HttpOnly,Secure,SameSite=Laxpara a sessão de início de sessão. Não coloque tokens de autenticação no localStorage.» - «Guarde apenas um ID de sessão aleatório no cookie; guarde os dados da sessão no servidor.»
- «No fim de sessão, apague o cookie e invalide a sessão no servidor.»
- «Não carregue scripts de análise ou marketing até o visitante os aceitar, e memorize a sua escolha.»
- «Acrescente à política de privacidade uma pequena secção sobre cookies que corresponda à lista acima.»
Para a parte do consentimento, veja como acrescentar consentimento de cookies. Para perceber como os cookies se encaixam nos inícios de sessão, leia o que é a autenticação.
Cookies no Mythex
O Mythex não oferece um início de sessão incorporado para os utilizadores da sua aplicação, por isso os cookies que a sua aplicação define vêm do código dela e das ferramentas que lhe acrescenta — por exemplo, um cookie de sessão da abordagem de autenticação que escolher. Peça ao agente no chat para os listar, apertar as suas definições ou acrescentar um banner de consentimento, e verifique o resultado na pré-visualização em tempo real antes de publicar. A receita da documentação sobre como acrescentar início de sessão à sua aplicação é um bom pedido inicial, e a segurança para as aplicações que cria explica como manter chaves e segredos fora do navegador.
Perguntas
O que é um cookie num site?
Um cookie é um pequeno texto que um site pede ao seu navegador para guardar. O navegador envia-o de volta em cada pedido posterior a esse site, o que permite ao site lembrar-se de coisas como se tem sessão iniciada ou o que está no carrinho.
Os cookies são perigosos?
Os cookies são apenas dados, não programas, por isso não conseguem executar código nem infetar um computador. As preocupações são a privacidade, quando cookies de terceiros o seguem entre sites, e a segurança, quando um cookie de início de sessão é roubado e usado para se fazer passar por si.
Qual é a diferença entre cookies de primeira e de terceira parte?
Um cookie de primeira parte é definido pelo site que aparece na barra de endereços, como um cookie de início de sessão. Um cookie de terceira parte é definido por outro domínio incorporado na página, como uma rede de anúncios, e é muitas vezes usado para o seguir por vários sites.
Preciso de um banner de cookies?
Depende de onde estão os seus utilizadores e de que cookies usa. Na UE e no Reino Unido, os cookies não essenciais, como os de análise ou publicidade, normalmente precisam de consentimento prévio, enquanto os estritamente necessários para o serviço, como uma sessão de início de sessão, normalmente não. Verifique as regras que se aplicam a si.
Qual é a diferença entre cookies e localStorage?
Ambos guardam dados no navegador. Os cookies são enviados ao servidor automaticamente em cada pedido, o que se adequa aos inícios de sessão. O localStorage fica no navegador e só é lido pelo código da própria página, o que se adequa a preferências como um tema.