SameSite cookies

Esta tradução está incompleta. Ajude a traduzir este artigo em inglês

O atributo  SameSite  do Set-Cookie . O cabeçalho de resposta HTTP permite que você declare se o seu cookie deve ser restrito a um contexto de primeira ou mesma parte.

Valores

The SameSite aceita três valores:

Lax

Os cookies podem ser enviados com navegação de alto nível e serão enviados juntamente com a solicitação GET iniciada pelo site de terceiros. Este é o valor padrão nos navegadores modernos.

Strict

Os cookies serão enviados apenas em um contexto de primeira parte e não serão enviados juntamente com solicitações iniciadas por sites de terceiros.

None

Cookies serão enviados em todos os contextos, ou seja, é permitido enviar origem cruzada.

None costumava ser o valor padrão, mas as versões recentes do navegador fizeram Lax o valor padrão para ter uma defesa razoavelmente robusta contra algumas classes de falsificação de solicitações entre sites (CSRF).

None requer o atributo Secure nas versões mais recentes do navegador. Veja abaixo para mais informações.

Fixação de avisos comuns

SameSite=None requer Secure

O aviso a seguir pode aparecer no seu console:

Alguns cookies estão usando mal o atributo "sameSite", então não funcionará como esperado.
Cookie "myCookie" rejeitado porque tem o atributo "sameSite=none", mas está perdendo o atributo "seguro".

O aviso aparece porque qualquer cookie que solicitar SameSite=None mas não está marcado Secure será rejeitado.

Set-Cookie: flavor=choco; SameSite=None

Para corrigir isso, você terá que adicionar o atributo Secure aos seus cookies SameSite=None.

Set-Cookie: flavor=choco; SameSite=None; Secure

Um cookie Secure só é enviado ao servidor com uma solicitação criptografada sobre o protocolo HTTPS. Observe que sites inseguros (http:) não pode definir cookies com a diretiva Secure.

Cookies sem padrão SameSite para SameSite=Lax

Versões recentes de navegadores modernos fornecem um padrão mais seguro para SameSite para seus cookies e assim a seguinte mensagem pode aparecer no seu console:

Alguns cookies estão usando mal o atributo "sameSite", então não funcionará como esperado.
Cookie "myCookie" tem a política "sameSite" definida como "frouxa" porque está faltando um atributo "sameSite" e "sameSite=lax" é o valor padrão para este atributo.

O aviso aparece porque a política SameSite para um cookie não especificou explicitamente:

Set-Cookie: flavor=choco

Embora você possa confiar em navegadores modernos para aplicar SameSite=Lax automaticamente, você deve sim especificá-lo explicitamente para comunicar claramente sua intenção que SameSite política se aplica ao seu cookie. Isso também melhorará a experiência entre os navegadores, pois nem todos eles são padrão para Lax ainda.

Set-Cookie: flavor=choco; SameSite=Lax

Examplo:

RewriteEngine on
RewriteBase "/"
RewriteCond "%{HTTP_HOST}"       "^example\.org$" [NC]
RewriteRule "^(.*)"              "https://www.example.org/index.html" [R=301,L,QSA]
RewriteRule "^(.*)\.ht$"         "index.php?nav=$1 [NC,L,QSA,CO=RewriteRule:01:https://www.example.org:30/:SameSite=None:Secure]
RewriteRule "^(.*)\.htm$"        "index.php?nav=$1 [NC,L,QSA,CO=RewriteRule:02:https://www.example.org:30/:SameSite=None:Secure]
RewriteRule "^(.*)\.html$"       "index.php?nav=$1 [NC,L,QSA,CO=RewriteRule:03:https://www.example.org:30/:SameSite=None:Secure]
[...]
RewriteRule "^admin/(.*)\.html$" "admin/index.php?nav=$1 [NC,L,QSA,CO=RewriteRule:09:https://www.example.org:30/:SameSite=Strict:Secure]

Especificações

Specification Title
RFC 6265, sessão 4.1: Set-Cookie Mecanismo de gestão do estado HTTP
draft-ietf-httpbis-rfc6265bis-05 Cookie Prefixes, Same-Site Cookies, e Strict Secure Cookies

Browser compatibility

Veja também: