Nada de biscoitos assustadores

Os biscoitos são melhores quando frescos. Então, quais são as receitas mais recentes para você aproveitar a temporada de Halloween sem biscoitos velhos?

Os biscoitos são melhores quando frescos. Então, quais são as receitas mais recentes para garantir que você ainda possa aproveitar a temporada de Halloween sem biscoitos velhos?

Estamos no caminho para eliminar gradualmente os cookies de terceiros na plataforma da Web. Esse é um marco importante no combate ao rastreamento entre sites, mas é parte de uma jornada muito longa. Vamos conferir o quanto avançamos e o que vem por aí no futuro…

Na superfície, os cookies fornecem um armazenamento de chave-valor simples que é enviado entre o navegador e o servidor. Isso pode oferecer uma funcionalidade útil em um site, como salvar uma preferência: theme=bats ou armazenar o ID da sessão para um usuário conectado.

Um cookie de terceiros que carrega um valor simples, como theme=bats ou fav_pumpkins=us-nyc

Se esse cookie estiver sendo usado no mesmo site que o definiu, ele será chamado de cookie primário. Se ele estiver sendo usado como parte de um site diferente do que o definiu, ele será chamado de cookie de terceiros. Por exemplo, meu cookie theme=bats seria primário se eu estivesse acessando o mesmo site que o definiu, mas, se ele for incluído em um iframe ou outro recurso entre sites como parte de um site diferente, ele será um cookie de terceiros.

O problema com cookies de terceiros é que eles podem ativar o rastreamento entre sites. Em vez de definir algo como um tema, o serviço compartilhado pode armazenar um identificador inteiro. Esse mesmo identificador é enviado quando você navega por diferentes sites que incluem o cookie de serviços compartilhados, o que significa que um serviço pode observar e vincular sua atividade nesses sites.

Um cookie de terceiros com um ID exclusivo que permite que o site de terceiros rastreie um usuário pela Web

Cookies primários por padrão

Já fizemos progressos nessa jornada! Antes, bastava definir um cookie simples: theme=pumpkins era enviado em todos os contextos: no mesmo site ou em vários sites. A maioria dos sites só quer que os cookies sejam enviados no mesmo contexto. Isso pode ser controlado pelo atributo SameSite no cookie. Exemplo:

Set-Cookie: theme=bats; SameSite=Lax

Isso informa ao navegador para enviar o cookie somente se o recurso corresponder ao site de nível superior. No entanto, isso significava que o site precisava especificar quando queria o cookie de origem. Isso é um pouco contrário em termos de segurança, porque você precisa perguntar quando quiser mais privilégios, não apenas recebê-los por padrão.

Agora, SameSite=Lax é o padrão. Se você definir theme=bats, ele só será enviado em um contexto do mesmo site.

O valor padrão SameSite=Lax impede que um cookie seja enviado em um contexto de terceiros.

Se você quiser um cookie entre sites ou de terceiros (talvez seja necessário que o tema seja exibido em um widget incorporado), especifique:

Set-Cookie: theme=bats; SameSite=None; Secure
O valor explícito SameSite=None marca o cookie para ser enviado em contextos entre sites.

Isso informa ao navegador que você quer que o cookie seja enviado em qualquer contexto entre sites, mas queremos restringir apenas a conexões seguras.

Cookies primários ainda mais saborosos

Embora a configuração padrão tenha melhorado um pouco, ainda há espaço para você melhorar essa receita. Confira um exemplo:

Set-Cookie:  __Host-theme=bats;
  Secure;
  Path=/;
  HttpOnly;
  Max-Age=7776000;
  SameSite=Lax;

Isso vai gerar um cookie primário que fica restrito a apenas um domínio, conexões seguras, sem acesso por JavaScript, expira automaticamente antes de ficar desatualizado e (claro!) só é permitido em contextos do mesmo site.

Os cookies ficam mais gostosos com CHIPS!

Um dos aspectos mágicos da Web é a capacidade de compor vários sites juntos. Digamos que eu queira criar um widget de mapa que permita que outros sites mostrem os melhores passeios de colheita de abóboras ou trajetos de pedir doces. Meu serviço usa um cookie para permitir que os usuários armazenem o progresso ao longo do trajeto. O problema é que o mesmo cookie de terceiros será enviado no site do campo de abóboras e no site de Halloween. Não quero rastrear usuários entre sites, mas o navegador usa apenas um cookie jar. Não há como separar esse uso.

Os cookies entre sites com SameSite=None ainda vão para um cookie compartilhado.

É aí que entra a proposta de cookies com estado particionado independente, ou CHIPS, Em vez de um cookie compartilhado, há um cookie separado e particionado por site de nível superior. Os sites poderiam ativar essa opção usando o atributo Partitioned no cookie.

Set-Cookie: __Host-route=123;
  SameSite=None;
  Secure;
  Path=/;
  Partitioned;
O atributo Partitioned no cookie cria armazenamentos separados por site de nível superior

Em vez de compartilhar o pote de biscoitos, cada um tem o próprio. Mais simples, mais segura e mais higiênica.

Acabamos de enviar a Intent to Ship para Cookies com estado particionado independente (CHIPS, na sigla em inglês) no Chrome 109. Isso significa que eles vão estar disponíveis para teste na versão Beta em dezembro e prontos para a versão estável em janeiro de 2023. Portanto, se você está procurando uma resolução de Ano Novo para melhorar a receita de cookies do seu site, confira se é possível começar a usar o CHIPS nesses cookies entre sites.

Como usar o First-Party Sets para convidar cookies para a festa

Sobre o assunto de feedback dos desenvolvedores, muitos de vocês também esclareceram que há situações em que você compartilha serviços em sites que você controla e quer poder usar cookies neles, mas não permitir que sejam enviados em contextos de terceiros reais. Por exemplo, talvez você tenha pretty-pumpkins.com e pretty-pumpkins.co.uk. Você pode ter um sistema de logon único baseado em cookies que funcione nesses sites. O CHIPS não funciona porque eu preciso fazer login em ambos os sites. O requisito é que eu preciso do mesmo cookie nesses sites relacionados.

Estamos trabalhando na proposta de conjuntos próprios para tentar tornar isso possível. Fizemos um teste de origem e muitas discussões com a comunidade, o que resultou na versão mais recente, que tem como objetivo:

  • Oferecer às organizações uma maneira de definir um grupo de sites que precisam ser da mesma parte.
  • Use a API Storage Access para solicitar acesso a cookies entre sites dentro desse conjunto próprio.
Os conjuntos primários permitem que um cookie compartilhado seja compartilhado apenas entre sites relacionados

Esses cookies ainda estão no forno, mas você pode conferir o guia para desenvolvedores de conjuntos próprios quando houver mais para testar ou acessar a proposta WICG/first-party-sets se você quiser contribuir com a discussão.

Não deixe seus cookies ficarem velhos!

Nosso objetivo é começar a descontinuar o suporte a cookies de terceiros no Chrome a partir de meados de 2024. Ainda há tempo para se preparar, mas você precisa começar a planejar agora.

  1. Audite seu código em busca de cookies com SameSite=None. Estes são os cookies que vão precisar de atualizações.
  2. Se você não tiver cookies de terceiros, verifique se os cookies do mesmo site estão usando as melhores receitas de cookies primários.
  3. Se você usar esses cookies em um contexto totalmente contido e incorporado, investigue e teste a proposta CHIPS.
  4. Se você precisar desses cookies em vários sites que formam um grupo coeso, investigue a proposta de conjuntos próprios.
  5. Se você não se enquadra em nenhuma dessas opções, será necessário investigar as outras propostas do Sandbox de privacidade, em que estamos desenvolvendo APIs desenvolvidas especificamente para casos de uso individuais que não dependem do rastreamento entre sites.

Essa é apenas uma breve visão geral, e vamos continuar compartilhando mais notícias e orientações à medida que o trabalho avança. Se você tiver dúvidas, problemas ou quiser compartilhar os resultados do seu trabalho, temos várias maneiras de entrar em contato.

Lembre-se: os cookies podem ser deliciosos, mas apenas alguns por vez, e definitivamente não tente roubar os de ninguém.