No Chrome 135, é possível usar o novo valor sandbox
:
allow-same-site-none-cookies
. Quando essa política é especificada e os cookies de terceiros
não estão disponíveis, o navegador só envia cookies SameSite=None
em
solicitações HTTP originadas de iframes sandboxed próprios.
O que é um iframe em sandbox?
Os iframes em sandbox têm
restrições especiais. Eles são tratados como tendo uma origem
opaco
null
. Por padrão, recursos potencialmente nocivos, como scripts, formulários e pop-ups,
não estão disponíveis em iframes em sandbox.
Use o atributo sandbox
para
especificar
quais recursos um iframe em sandbox precisa ter disponível. Exemplo:
<iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>
O sandboxing é sempre uma boa ideia, porque permite selecionar de forma granular as permissões necessárias para que o conteúdo incorporado seja carregado com sucesso, além de limitar o escopo de possíveis ataques.
Por que precisamos dessa nova política?
Antes da introdução de allow-same-site-none-cookies
, era possível configurar
dois cenários de cookies em um iframe em sandbox:
- Sem o token
allow-same-origin
no atributosandbox
, a origem do iframe é serializada comonull
, fazendo com que todas as solicitações da página isolada sejam entre sites. Nesse caso, apenas os cookies comSameSite=None
serão incluídos nas solicitações. - Com o token
allow-same-origin
no atributosandbox
, as solicitações são tratadas como originadas da origem real do iframe, permitindo que cookies com qualquer valorSameSite
sejam enviados.
Com os cookies de terceiros bloqueados, um iframe em sandbox sem allow-same-origin
não pode enviar cookies, a menos que você ative allow-same-site-none-cookies
.
Um iframe com allow-same-origin
ainda poderá incluir cookies em
solicitações do mesmo site, mesmo quando os cookies de terceiros estiverem bloqueados. No entanto, o
cofre de cookies da origem inteira seria exposto a atividades da Web
potencialmente maliciosas.
Com allow-same-site-none-cookies
, um iframe pode enviar cookies SameSite=None
em solicitações HTTP, enquanto cookies SameSite=Strict
e
SameSite=Lax
potencialmente sensíveis não são incluídos.
Exemplo prático
Considere um site, practice-coding.example
, que permite que os usuários criem e executem
projetos de programação personalizados e incorporem o código de outros usuários. Para usar o serviço, os usuários
precisam fazer login, o que resulta na definição de um cookie de sessão SameSite=Strict
.
Outro usuário cria um projeto, practice-coding.example/cookie-theft
, que
outros usuários podem incorporar como um iframe nos próprios projetos sem saber. Se os cookies SameSite=Strict
e SameSite=Lax
forem expostos ao iframe practice-coding.example/cookie-theft
, o usuário mal-intencionado poderá roubar os cookies de sessão de outros usuários.
Nesse cenário, o proprietário do site pode querer restringir o acesso a cookies potencialmente
sensíveis. No entanto, eles ainda podem permitir cookies SameSite=None
em iframes em sandbox. Por exemplo,
practice-coding.example/coding-interview
iframes em sandbox podem exigir
cookies SameSite=None
para permitir que os candidatos revisem o código.
allow-same-site-none-cookies
impede a exposição de todo o cookie jar,
permitindo seletivamente os cookies SameSite=None
necessários.
Como permitir apenas SameSite=None
em frames em sandbox próprios?
Para ativar cookies SameSite=None
em solicitações de páginas sandbox próprias,
especifique o token allow-same-site-none-cookies
na tag iframe. Exemplo:
<iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>
Também é possível definir uma política allow-same-site-none-cookies
com um
cabeçalho HTTP Content-Security-Policy
:
Content-Security-Policy: sandbox allow-same-site-none-cookies;
Teste você mesmo com nossa demonstração.
Engajamento e compartilhamento de feedback
Envie um problema para compartilhar feedback ou relatar problemas ou participe da discussão no GitHub.