Quando um servidor da Web responde a uma solicitação de recurso, ele pode incluir um
cabeçalho Set-Cookie
com a resposta. Esse cabeçalho informa ao navegador para
armazenar um cookie. Por exemplo, Set-Cookie:cat=tabby
.
O que são cookies? explica como os cookies funcionam.
Além de fornecer um nome e um valor de cookie, Set-Cookie
pode incluir
atributos para controlar se os cookies são definidos e quando eles expiram. Os atributos
do cookie são separados por ponto e vírgula. Exemplo:
Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
Este artigo explica os atributos de cookie mais importantes:
Usar cookies HTTP explica os atributos de cookies com mais detalhes técnicos.
Seguro
👉 Inclua Secure
por padrão para todos os cookies.
Se um cabeçalho Set-Cookie
incluir Secure
, o cookie só será incluído
com solicitações criptografadas que usam o protocolo HTTPS. Ele não será
incluído em solicitações HTTP. Isso pode ajudar a impedir
ataques intermediários,
em que um invasor intervém secretamente nas comunicações entre o
navegador e o servidor para transmitir e, possivelmente, alterar informações.
HTTPOnly
👉 Inclua HTTPOnly
por padrão para todos os cookies. Omita apenas se você
precisar de acesso a JavaScript.
Se um cabeçalho Set-Cookie
incluir HTTPOnly
, o cookie não poderá ser acessado
usando document.cookie
. Isso ajuda a proteger contra determinados tipos de ataque
que são direcionados a cookies.
SameSite
👉 SameSite=Lax
é o padrão se nenhum valor for definido. SameSite=None
permite
cookies entre sites, mas significa que os cookies serão bloqueados quando as restrições de cookies
de terceiros estiverem em vigor.
Uma solicitação de um recurso de um site diferente do que você está visitando é uma solicitação entre sites. Um cookie definido em resposta a uma solicitação entre sites é conhecido como cookie de terceiros. Saiba mais: O que são cookies de terceiros?
O atributo SameSite
controla se um cookie de terceiros será incluído
em uma solicitação. Ele tem três valores possíveis: Strict
, Lax
ou None
.
Estrito
O cookie só será enviado em resposta a solicitações de uma página que esteja no site de origem do cookie. Por exemplo, imagine que um usuário visita cats.example
e tem
um cookie definido com o atributo SameSite=Strict
. Mais tarde, o usuário está em um
site diferente e clica em um link para uma página em cats.example
. O cookie
definido não será incluído nessa solicitação.
Lax
Isso funciona da mesma forma que Strict
, exceto que o navegador também inclui
o cookie quando o usuário segue um link para o site de origem do cookie. No exemplo
Strict
anterior, o cookie seria incluído quando o usuário clicasse no
link para cats.example
. Lax
é o padrão se nenhum atributo SameSite
for
incluído em um cabeçalho Set-Cookie
.
Nenhum
Sem restrições: o cookie será incluído em uma solicitação, seja ela entre sites ou não. Com SameSite=None
, o cookie também precisa ter o
atributo Secure
.
Saiba mais: Explicação sobre cookies SameSite.
Particionada
👉 Inclua o atributo Partitioned
por padrão se você estiver criando
um cookie de terceiros, a menos que saiba explicitamente que ele precisa ser compartilhado
em várias incorporações.
Esse atributo permite ativar um cookie no armazenamento particionado, com um armazenamento separado por site de nível superior. O cookie tem duas chaves, pelo site de nível superior e pelo domínio que o define.
Por exemplo, imagine que o site A e o site B incluem um iframe do site C. Um cookie particionado definido pelo iframe no site A não pode ser acessado pelo iframe no site B: o cookie AC é separado do cookie BC.
Os cookies com um atributo Partitioned
são conhecidos como CHIPS: cookies com estado particionado independente.
Os cookies particionados precisam ter o atributo Secure
.
Saiba mais: Cookies com estado particionado independente.
Expires e Max-Age
👉 Deixe de fora os atributos Max-Age
e Expires
, a menos que você precise de um cookie para
durar mais do que a sessão atual. Os navegadores expiram cookies. Portanto, não faz sentido definir uma expiração para anos no futuro. Em vez disso, reconsidere atualizar os cookies quando um usuário visitar seu site novamente.
É possível especificar uma data e hora Expires
ou um Max-Age
em segundos, após
o que um cookie precisa ser excluído e não mais enviado. Exemplo:
Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
Set-Cookie:cat=tabby; Max-Age=86400
Se você não especificar um atributo Max-Age
ou Expires
, um cookie será
excluído quando a sessão atual terminar. Esse tipo de cookie às vezes é conhecido como
cookie de sessão.
Domínio
👉 A menos que você precise incluir um cookie nas solicitações a subdomínios,
não inclua um atributo Domain
.
Se um cabeçalho Set-Cookie
tiver um atributo Domain
, o cookie será incluído
com solicitações para o domínio especificado e qualquer um dos subdomínios dele.
Se um cabeçalho Set-Cookie
não tiver um atributo Domain
, o cookie não será incluído nas solicitações a subdomínios.
Em outras palavras, incluir o atributo Domain
reduz as restrições de domínio.
Por exemplo, com uma resposta do site cats.example
:
Set-Cookie:cat=tabby
O cookie só será incluído em solicitações paracats.example
Set-Cookie:cat=tabby; Domain=cats.example
O cookie será incluído nas solicitações paracats.example
e também em solicitações de recursos em subdomínios, comofluffy.cats.example
ouuser.assets.cats.example
.
Caminho
👉 Inclua Path=/
com um cookie se você precisar que todas as solicitações para qualquer caminho no seu
site incluam o cookie. Não confie em Path
para proteção de segurança.
Se um atributo Path
for incluído em um cabeçalho de resposta Set-Cookie
, o cookie
definido só será incluído em solicitações para URLs (no site que definiu o
cookie!) que correspondem ao valor Path
.
Exemplo:
Set-Cookie:cat=tabby; Path=/articles
O cookie será incluído para uma solicitação de qualquer caminho de URL que comece com/articles
:
✅https://cats.example/articles/tabby/index.html
✅https://cats.example/articles/breeds/tabby/index.html
❎https://cats.example/images/tabby.jpg
❎https://cats.example/en/articles/tabby/index.html
Set-Cookie:cat=tabby; Path=/
Todas as solicitações para qualquer URL no site vão incluir o cookie.
Se um cabeçalho de resposta Set-Cookie
não tiver um valor Path
, o cookie só será incluído com solicitações para o mesmo diretório. Por exemplo, imagine que
um cookie cat=tabby
seja definido em resposta a uma solicitação de
cats.example/images/tabby.jpg.
. Se nenhum Path
for definido, o cookie só será
incluído com solicitações de arquivos no diretório cats.example/images
.
Demonstrações
- 1pc.glitch.me: demonstração de cookies primários
- 3pc.glitch.me: demonstração de cookies de terceiros
Ferramentas
- Consultar, adicionar, editar e excluir cookies nas Ferramentas do desenvolvedor do Chrome
- Ferramenta de análise de dados do Sandbox de privacidade