iframe sandbox: o que cada token permite

Atributo sandbox do iframe

iframe sandbox: todos os tokens, com demonstração ao vivo | We.Inc

Ative e desative cada token do sandbox do iframe e veja scripts, formulários, popups e alertas começarem ou pararem de funcionar. Todos os tokens explicados.

Um atributo sandbox vazio tranca o iframe por completo: nada de scripts, envio de formulários, popups ou alertas, e uma origem opaca que falha em toda verificação de mesma origem. Cada token allow- que você adiciona devolve um poder. Ative os tokens abaixo para ver exatamente o que quebra e depois copie o menor conjunto de que o seu embed precisa.

Usos comuns e os tokens de que precisam

O atributo sandbox é o ganho de segurança mais barato que você pode adicionar a um iframe que exibe conteúdo que você não escreveu: HTML de usuários, um espaço de anúncio, a prévia de uma página gerada. A parte difícil é saber quais tokens um embed precisa, porque a falta de um costuma falhar em silêncio. O frame ao vivo abaixo executa testes reais, então você vê cada falha em vez de adivinhar. Para o básico sobre embeds, comece pelo nosso guia de iframe e vídeo em HTML.

Perguntas frequentes

O que faz um atributo sandbox vazio?

Aplica todas as restrições de uma vez. O documento no frame não pode executar scripts, enviar formulários, abrir popups ou modais, navegar a janela principal, travar o ponteiro ou a orientação, nem iniciar downloads, e é tratado como vindo de uma origem única que nunca coincide com nenhuma outra.

Por que allow-scripts com allow-same-origin é perigoso?

Quando o documento no frame está na mesma origem da sua página, esses dois tokens juntos deixam o script dele alcançar o pai e apagar o atributo sandbox, então ele acaba tão inseguro quanto um iframe comum. A combinação não tem problema para conteúdo de uma origem realmente diferente, que de qualquer forma não consegue tocar na sua página.

Meu formulário em sandbox não faz nada quando clico em enviar. Por quê?

Sem allow-forms o formulário ainda aparece, mas enviá-lo não dispara validação nem manda dados a um servidor. Adicione allow-forms. Se o formulário também depende de cookies ou armazenamento do próprio site, ele vai precisar de allow-same-origin também.

Um iframe em sandbox pode redirecionar minha página inteira?

Não, a menos que você adicione allow-top-navigation, ou allow-top-navigation-by-user-activation, que só permite isso depois que a pessoa clica dentro do frame. Deixar os dois de fora impede que um embed troque sua página por outro site.

O sandbox basta para exibir HTML não confiável com segurança?

Ele é a camada principal, não a única. Sirva conteúdo não confiável de uma origem separada ou via srcdoc, mantenha allow-same-origin desligado quando os scripts estiverem ligados e adicione uma Content-Security-Policy ao documento no frame se você controla como ele é servido.

Como a origem opaca muda as coisas

Falhas silenciosas são a regra

sandbox, allow e CSP fazem trabalhos diferentes

Todos os tokens do sandbox

Os tokens são separados por espaço e não diferenciam maiúsculas de minúsculas. Tudo o que não estiver listado continua bloqueado.

Tokens do sandbox e o que cada um permite

Padrões para copiar

Prévia de HTML de usuário com scripts desligados

O botão dentro do frame tem um handler onclick, mas com um sandbox vazio ele nunca é executado.

Widget de terceiros em outra origem

O widget executa o próprio script e envia o formulário, e os links podem abrir abas reais. Ele não consegue redirecionar sua página.

As mesmas restrições enviadas como header de resposta

Um servidor pode colocar a própria página em sandbox com CSP, o que vale mesmo quando a página é aberta diretamente em vez de dentro de um frame.

Ative tokens e teste o frame

O frame abaixo é um documento srcdoc. allow-same-origin não é oferecido aqui, porque um frame srcdoc passaria a compartilhar a origem desta página, exatamente a combinação contra a qual as dicas alertam.

Os scripts estão bloqueados, então nada neste frame pode ser executado.

Tokens

Atributo atual

Frame de teste do sandbox

Os scripts rodaram. A origem deste frame é: {v}

Enviar formulário

Abrir popup

Mostrar alerta

Formulário enviado.

O formulário não foi enviado.

Popup aberto (e fechado de novo).

Popup bloqueado: window.open retornou null.

O alerta foi exibido.

Alerta bloqueado: retornou na hora sem aparecer.

Olá do frame em sandbox

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site