Cookies e armazenamento local

Cookies são cadeias de caracteres de texto enviadas de sites e armazenadas em um computador pelo navegador. Eles são usados para autenticação e personalização. Por exemplo, os cookies são usados para recuperar informações com estado, preservar as configurações do usuário, registrar a atividade de navegação e exibir anúncios relevantes. Os cookies sempre são vinculados a um domínio específico e são instalados por várias partes.

Tipos de cookies

Os tipos de cookie e seus escopos correspondentes são os seguintes:

Cookie Escopo
Cookie primário Um cookie primário é criado por sites que um usuário visita. É usado para salvar dados, como itens do carrinho de compras e credenciais de entrada. Por exemplo, cookies de autenticação e outras análises.
Cookie secundário Um cookie secundário é tecnicamente o mesmo que um cookie primário. A diferença é que os dados são compartilhados com uma outra parte por meio de um contrato de parceria de dados. Por exemplo, Análise e relatórios do Microsoft Teams.
Cookie de terceiros Um cookie de terceiros é instalado por um domínio diferente daquele que o usuário visitou explicitamente e é usado para rastreamento. Por exemplo, os botões Curtir, serviço de anúncios e chats ao vivo.

Cookies e solicitações HTTP

Antes da introdução das restrições do SameSite, os cookies eram armazenados no navegador. Eles eram anexados a cada solicitação HTTP da Web e enviados ao servidor pelo cabeçalho de resposta HTTP Set Cookie. Esse método introduziu vulnerabilidades de segurança, como solicitação intersite forjada, chamadas de ataques CSRF. O componente do SameSite reduziu a exposição por meio de sua implementação e gerenciamento no cabeçalho SetCookie.

O Google Chrome versão 51 introduziu a especificação SetCookie SameSite como um atributo opcional. A partir da compilação 17672, o Windows 10 introduziu o suporte a cookies SameSite para o navegador Microsoft Edge.

Você pode recusar a adição do atributo de cookie SameSite ao cabeçalho SetCookie ou adicioná-lo com uma das duas configurações, Lax e Strict. Um atributo SameSite não implementado foi considerado o estado padrão.

O Chrome 80 introduz novos valores de cookies e impõe políticas de cookies por padrão. Três valores são passados para o atributo SameSite atualizado: Strict, Lax ou None. Se não for especificado, o atributo SameSite dos cookies assume o valor SameSite=Lax por padrão.

Os atributos do cookie SameSite são os seguintes:

Setting Imposição Valor Especificação do atributo
Lax Os cookies são enviados automaticamente apenas em um contexto primário e com solicitações HTTP GET. Os cookies SameSite são retidos em subsolicitações entre sites, como chamadas para carregar imagens ou iframes. Eles são enviados quando um usuário navega pela URL de um site externo, por exemplo, seguindo um link. Default Set-Cookie: key=value; SameSite=Lax
Estrito O navegador envia apenas cookies para solicitações de contexto primário. Essas são solicitações originadas do site que define o cookie. Se a solicitação tiver sido originada de uma URL diferente da localização atual, nenhum dos cookies marcados com o atributo Strict será enviado. Opcional Set-Cookie: key=value; SameSite=Strict
Nenhum Os cookies são enviados no contexto primário e em solicitações de origem cruzada; no entanto, o valor deve ser definido explicitamente e None todas as solicitações do navegador devem seguir o protocolo HTTPS e incluir o atributo, o Secure que requer uma conexão criptografada. Os cookies que não cumprirem esse requisito serão rejeitados.
Ambos os atributos são necessários juntos. Se None for especificado sem Secure ou se o protocolo HTTPS não for usado, os cookies de terceiros serão rejeitados.
Opcional, mas, se definido, o protocolo HTTPS é obrigatório. Set-Cookie: key=value; SameSite=None; Secure

Implicações e ajustes do Teams

  1. Habilite a configuração relevante do SameSite para seus cookies e certifique-se que seus aplicativos e extensões continuam funcionando no Teams.
  2. Se os aplicativos ou extensões falharem, faça as correções necessárias antes da versão do Chrome 80.
  3. Os parceiros internos da Microsoft podem se juntar à seguinte equipe para obter mais informações ou obter ajuda com esse problema: https://teams.microsoft.com/l/team/19%3A08b594cd465e4c0491fb751e823802e2%40thread.skype/conversations?groupId=4d6d04cd-dbf0-43c8-a2ff-f80dd38be034& tenantId=aaaabbbb-0000-cccc-1111-dddd2222eeee.

Observação

Você deve definir o atributo SameSite para refletir a finalidade para a qual o cookie é usado. Não confie no comportamento padrão do navegador. Para obter mais informações, confira Desenvolvedores: prepare-se para o novo SameSite=None; Configurações Seguras de Cookie.

Guias, caixas de diálogo e extensões de mensagem

  • As guias do Teams usam <iframes> para inserir conteúdo que é exibido em um contexto primário ou de nível superior.
  • As caixas de diálogo (chamadas de módulos de tarefas no TeamsJS v1.x) permitem que você crie experiências pop-up modais no aplicativo Teams. Semelhante a uma guia, uma janela modal é aberta dentro da página atual.
  • As extensões de mensagem permitem inserir conteúdo enriquecido em uma mensagem de chat a partir de recursos externos.

Todos os cookies usados pelo conteúdo inserido são considerados como de terceiros quando o site é exibido em um <iframe>. Além disso, se algum recurso remoto em uma página depender de cookies que são enviados com uma solicitação <img> e marcas <script>, fontes externas e conteúdo personalizado, você deve garantir que eles sejam marcados para uso entre sites, como SameSite=None; Secure ou garantir que um fallback esteja em vigor.

Autenticação

Você deve usar o fluxo de autenticação baseado na Web para o seguinte:

  • Páginas de conteúdo inseridas em guias.
  • Página de configuração, caixa de diálogo e extensão de mensagem.
  • Bot de conversa com uma caixa de diálogo.

De acordo com as restrições atualizadas do SameSite, um navegador não adiciona um cookie a um site já autenticado se o link derivar de um site externo. Você deve garantir que os cookies de autenticação estejam marcados para uso entre sites SameSite=None; Secure ou verificar se um fallback está em vigor.

Android System WebView

O Android WebView é um componente do sistema Chrome que permite que aplicativos Android exibam o conteúdo da Web. Embora as novas restrições sejam padrão, a partir do Chrome 80, elas não são aplicadas imediatamente no WebViews. Elas serão aplicadas no futuro. Para se preparar, o Android permite que aplicativos nativos definam cookies diretamente por meio da API CookieManager.

Observação

  • Você deve declarar cookies primários como SameSite=Lax ou SameSite=Strict, conforme apropriado.
  • Você deve declarar cookies de terceiros como SameSite=None; Secure.

Descontinuação de cookies de terceiros

Os cookies de terceiros estão em processo de substituição em todos os principais navegadores. Todos os cookies de terceiros definidos no domínio de nível superior são bloqueados quando esse domínio é incorporado em um iframedomínio .

Essa substituição afeta um cenário comum em que o aplicativo externo é renderizado no Teams em vários pontos de entrada, incluindo aplicativos pessoais, guias de canal e guias de conversa, em clientes da Web, da área de trabalho e móveis do Teams.

Cenário de autenticação pop-out

Cenários de autenticação de pop-out são um método comum para os aplicativos autenticarem usando diferentes provedores de identidade, como qualquer autenticação externa. Veja como funciona:

  1. A renderização iframe aciona um pop-up que carrega a página de entrada do provedor de autenticação selecionado.
  2. Depois que o usuário fizer login, o pop-up será redirecionado para o domínio do aplicativo aberto, onde um cookie de autenticação é definido e o pop-up será fechado.
  3. Esses cookies são usados dentro do incorporado iframe para autenticar o usuário.

A autenticação de pop-out não é afetada pela substituição de cookies de terceiros pelos seguintes motivos:

  • Os navegadores baseados no Chromium, como o Google Chrome e o Microsoft Edge, permitem o acesso a cookies não particionados, seguros e SameSite=None. Isso acontece quando os cookies são definidos em uma janela aberta do iframe para serem acessíveis no iframe.

  • Os navegadores que não são baseados no Chromium, como o Firefox, alinham sua substituição de cookie com navegadores baseados no Chromium.

O aplicativo simula esse cenário. Para usar um aplicativo com cookies:

  1. Carregue e abra seu aplicativo em um iframearquivo .

  2. Selecione Cookies particionados.

    As capturas de tela mostram os cookies particionados no aplicativo Cookies.

  3. Selecione o botão popOutApp para exibi-lo como um domínio primário.

    A captura de tela mostra a opção de aplicativo pop-out no aplicativo de cookies.

  4. Selecione Definir cookies particionados da API.

    A captura de tela mostra como definir cookies particionados da API.

    Agora você pode navegar até a guia cookies na janela do Teams e ver que apenas partitioned:false e secure:true cookies estão disponíveis:

    A captura de tela mostra a guia cookies com cookies particionados para false e seguros para true estão disponíveis

Essa ação define vários cookies com uma combinação de atributos seguros, SameSite e particionados. Somente SameSite=Nonecookies , seguros e não particionados são acessíveis dentro do iframe.

A captura de tela a seguir representa os cookies acessíveis no inserido iframe quando definido na janela pop-out de nível superior da iframeURL do :

A captura de tela mostra o aplicativo cookies de terceiros no Microsoft Teams.

Ações necessárias para cookies definidos pelo iframe

A tabela a seguir ajuda você a configurar o valor de atributos particionados para definir cookies para inserido iframe:

Definir cookies para incorporados iframe Valor do partitioned atributo
Se os cookies precisarem ser definidos fora do iframe mas precisam estar acessíveis dentro do iframe. Defina-a como false.
Se os cookies precisarem ser definidos dentro do iframe Você pode defini-la como um ou falsetrue, dependendo se deseja optar por CHIPS (Cookies com Estado Particionado Independente) para cookies.

Observação

Você deve definir o partitioned atributo como OR truefalse para garantir que o cookie seja definido.

Particionamento de armazenamento

O particionamento de armazenamento é totalmente implementado no Google Chrome. Isso implica que qualquer armazenamento local definido no contexto de terceiros não estará acessível no contexto de terceiros dentro de iframes e vice-versa.

Essa alteração pode interromper cenários como a autenticação externa em navegadores. Isso pode acontecer se eles dependerem do armazenamento de dados no armazenamento local do contexto primário. Depois, o acesso a esses dados no contexto de terceiros também pode ser afetado. Para obter mais informações, consulte particionamento de armazenamento.

Exemplo de código

Nome do exemplo Descrição Node.js
Aplicativo de cookies do Teams Este aplicativo de exemplo demonstra os principais recursos de armazenamento na Web, incluindo gerenciamento de cookies, cookies SameSite e cookies particionados. Exibir

Confira também