flawopen.com/CSRF/Cookies SameSite
SameSite=Strict substitui tokens CSRF?
SameSite=Strict é uma camada forte do navegador para requisições autenticadas por cookies que vêm de outro site, mas não é uma defesa universal contra CSRF. Subdomínios irmãos ainda contam como o mesmo site, mesmo sendo origens diferentes, e clientes que não aplicam o atributo não recebem proteção. Mantenha um token CSRF ou outra defesa de origem de requisição quando o modelo de ameaças exigir.
O que SameSite realmente faz
Um cookie SameSite=Strict não é enviado em requisições cross-site, inclusive no padrão clássico de CSRF em que outro site envia um formulário para sua aplicação. Isso impede que o navegador anexe automaticamente o cookie de sessão nesse contexto. SameSite é definido por site, não por origem: uma requisição de um subdomínio irmão ainda pode ser same-site, portanto Strict não protege contra um host irmão comprometido ou não confiável. Strict também pode deixar o usuário sem autenticação ao seguir um link externo, pois o cookie não é enviado nessa navegação.
Onde ainda há limitações
Se a autenticação usa um bearer token que a aplicação coloca explicitamente no cabeçalho Authorization, SameSite não controla esse cabeçalho. O comportamento automático do navegador para cookies é diferente. Isso não torna todo projeto automaticamente seguro: avalie se o navegador pode anexar credenciais por outro mecanismo e proteja os tokens contra roubo e uso indevido.
SameSite=Lax explícito permite requisições same-site e navegações de nível superior cross-site com método seguro, como GET; o cookie não é enviado em subrequisições cross-site nem em navegações com método inseguro. Um atributo omitido usa o padrão do agente de usuário. No Chromium, esse padrão difere do Lax explícito: a implementação atual permite que alguns cookies sem atributo explícito sejam enviados em requisições inseguras de nível superior cross-site por até 2 minutos após a criação (Lax-allowing-unsafe). Não dependa desse comportamento de compatibilidade específico do navegador para CSRF. Defina explicitamente o atributo desejado, teste os clientes suportados e nunca permita alterações de estado por um método seguro.
A aplicação de SameSite é um comportamento do navegador. Um cliente que não oferece suporte ou não respeita o atributo não recebe essa proteção. Verifique os clientes que sua aplicação suporta e trate SameSite como defesa em profundidade, junto com um token CSRF apropriado, validação de Origin ou outra defesa principal.
Perguntas frequentes
Consulte a orientação específica sobre métodos seguros. Não permita que ações que alteram estado sejam acessíveis por métodos seguros como GET; espera-se que métodos seguros não alterem o estado do servidor.