Preparar-se para as novas configurações de cookies SameSite=None; Secure

Quinta-feira, 16 de janeiro de 2020

Esta é uma postagem cruzada do Blog para desenvolvedores do Chromium e é específica sobre como as mudanças no Chrome poderão afetar o funcionamento do seu site para os usuários no futuro.

Em maio, o Chrome anunciou um modelo seguro por padrão para cookies, o que foi possibilitado por um novo sistema de classificação de cookies (especificações). Essa iniciativa faz parte dos nossos esforços contínuos para melhorar a privacidade e a segurança na Web.

O Chrome planeja implementar o novo modelo com o Chrome 80 em fevereiro de 2020. A Mozilla e a Microsoft também manifestaram intenção de implementar o novo modelo no Firefox e no Edge, de acordo com prazos próprios. Embora as mudanças no Chrome sejam daqui a alguns meses, é importante que os desenvolvedores que gerenciam cookies avaliem se estão preparados hoje. Esta postagem do blog descreve os conceitos gerais. Consulte Explicação sobre cookies SameSite em web.dev para ver orientações para desenvolvedores.

Os sites geralmente integram serviços externos para publicidade, recomendações de conteúdo, widgets de terceiros, incorporações de redes sociais e outros recursos. À medida que você navega na Web, esses serviços externos podem armazenar cookies no seu navegador e acessá-los depois para oferecer experiências personalizadas ou avaliar o engajamento do público-alvo. Cada cookie tem um domínio associado. Se o domínio associado a um cookie corresponder a um serviço externo, e não ao site na barra de endereço do usuário, o contexto dele será considerado para vários sites (ou "de terceiros").

Os casos de uso para vários sites menos evidentes incluem situações em que uma entidade que tem vários sites usa um cookie nessas propriedades. Embora a mesma entidade seja proprietária do cookie e dos sites, o contexto ainda será considerado como "vários sites" ou "terceiros" quando o domínio do cookie não corresponder aos sites acessados por ele.

O domínio do site não corresponde ao domínio do cookie

Quando um recurso externo em uma página da Web acessa um cookie que não corresponde ao domínio do site, o contexto é de "vários sites" ou "terceiros".

No entanto, o acesso a cookies no contexto do mesmo site (ou "primário") ocorre quando o domínio do cookie corresponde ao do site na barra de endereço do usuário. Os cookies do mesmo site normalmente são usados para manter pessoas conectadas a sites individuais, lembrar preferências e ter compatibilidade com site analytics.

O domínio do site corresponde ao domínio do cookie

Quando um recurso de uma página da Web acessa um cookie que corresponde ao site acessado pelo usuário, esse contexto é de "mesmo site" ou "primário".

Atualmente, se um cookie for acessado apenas em um contexto primário, o desenvolvedor tem duas opções de configuração (SameSite=Lax ou SameSite=Strict) para impedir o acesso externo. No entanto, muito poucos desenvolvedores seguem essa prática recomendada, deixando um grande número de cookies no mesmo site expostos de maneira desnecessária a ameaças como ataques de falsificação de solicitações entre sites.

Para proteger mais sites e usuários, o novo modelo, que prioriza a segurança por padrão, presume que todos os cookies precisam ser protegidos contra acesso externo, a menos que especificado de outra forma. Os desenvolvedores precisam usar a nova configuração de cookies SameSite=None para designar o acesso entre sites. Quando o atributo SameSite=None está presente, é necessário usar outro atributo, Secure, para que os cookies entre sites só possam ser acessados por conexões HTTPS. Isso não elimina todos os riscos associados ao acesso entre sites, mas fornece proteção contra ataques à rede.

Além dos benefícios imediatos de segurança, a declaração explícita de cookies entre sites permite maior transparência e escolha por parte do usuário. Por exemplo, os navegadores podem oferecer aos usuários controles granulares para gerenciar os cookies acessados por apenas um site separadamente.

Restrições do Chrome a partir de fevereiro de 2020

Com o Chrome 80, em fevereiro, os cookies que não tiverem o valor SameSite declarado serão tratados como SameSite=Lax. Somente cookies com a configuração SameSite=None; Secure estarão disponíveis para acesso externo, desde que acessados em conexões seguras. Os rastreadores de status da plataforma do Chrome para SameSite=None e Secure continuarão sendo atualizados com as informações mais recentes de lançamento.

A Mozilla confirmou a compatibilidade com o novo modelo de classificação de cookies com a intenção de implementar os requisitos de SameSite=None; Secure em cookies entre sites no Firefox. A Microsoft anunciou recentemente planos para começar a implementar o modelo com um experimento no Microsoft Edge 80.

Como se preparar e dificuldades conhecidas

Se você gerenciar cookies entre sites, será necessário aplicar a configuração SameSite=None; Secure. A implementação será simples para a maioria dos desenvolvedores, mas recomendamos que você comece os testes agora para identificar dificuldades e casos especiais, como os seguintes:

  • Nem todas as linguagens e bibliotecas aceitam o valor "None". Por isso, os desenvolvedores precisam definir o cabeçalho do cookie diretamente. Este repositório do GitHub (em inglês) oferece instruções para implementar SameSite=None; Secure em várias linguagens, bibliotecas e frameworks.
  • Alguns navegadores, incluindo certas versões do Chrome, Safari e UC, podem lidar com o valor None de maneiras não intencionais, o que exige que os desenvolvedores programem exceções para esses clientes. Isso inclui WebViews do Android com versões mais antigas do Chrome. Veja uma lista de clientes incompatíveis conhecidos.
  • Recomendamos que os desenvolvedores de apps declarem as configurações apropriadas do SameSite cookie para Android WebViews com base nas versões do Chrome compatíveis com o valor None, para os cookies acessados por cabeçalhos HTTP(S) e pela API CookieManager do Android WebView, embora o novo modelo não seja obrigatório no Android WebView no momento.
  • Os administradores de TI das empresas talvez precisem implementar políticas especiais para reverter temporariamente o navegador Chrome para o comportamento legado se alguns serviços, como o Logon único ou apps internos, não estiverem prontos para o lançamento em fevereiro.
  • Se você tiver cookies acessados em contextos primário e de terceiros, use cookies separados para ter os benefícios de segurança de SameSite=Lax para o contexto primário.

O artigo Cookies SameSite explicados apresenta orientações específicas para as situações acima e canais para comunicar problemas e tirar dúvidas.

Para testar o efeito do novo comportamento do Chrome no seu site ou nos cookies que você gerencia, acesse: chrome://flags no Chrome 76 ou mais recente e ative os experimentos "SameSite by default cookies" e "Cookies without SameSite must be secure". Além disso, esses experimentos vão ser ativados automaticamente para um subconjunto de usuários do Chrome 79 Beta. Alguns usuários da versão Beta com os experimentos ativados podem ter problemas de incompatibilidade com serviços que ainda não são compatíveis com o novo modelo. Para desativar os experimentos Beta, acesse chrome://flags e desative-os.

Se você gerencia cookies acessados apenas no contexto do mesmo site (cookies do mesmo site), não precisa fazer nada. O Chrome vai impedir automaticamente que esses cookies sejam acessados por entidades externas, mesmo se o atributo SameSite não estiver presente ou se nenhum valor estiver definido. No entanto, recomendamos aplicar um valor apropriado a SameSite (Lax ou Strict) e não depender do comportamento padrão do navegador, já que nem todos protegem os cookies do mesmo site por padrão.

Por fim, para saber se fornecedores e terceiros que fornecem serviços para seu site estão preparados para a mudança, verifique os avisos no console das Ferramentas para desenvolvedores no Chrome 77 e versões mais recentes quando uma página tiver cookies de vários sites sem as configurações necessárias:

Um cookie associado a um recurso de vários sites em (domínio do cookie) foi definido sem o atributo "SameSite".

Alguns fornecedores (incluindo alguns serviços do Google) implementarão as alterações necessárias até o lançamento do Chrome 80, em fevereiro. Entre em contato com seus parceiros para confirmar se eles estão prontos.