Skip to content

Iframes e Riscos de Embed

O elemento <iframe> permite incorporar um documento HTML dentro de outro. Embora seja útil, ele introduz riscos significativos de segurança se não for gerenciado corretamente.

Principais Riscos

  1. Clickjacking: Um site malicioso pode sobrepor um iframe invisível da sua aplicação para enganar o usuário a clicar em algo que ele não pretendia (ex: excluir conta).
  2. Navegação Não Autorizada: Um site dentro de um iframe pode tentar redirecionar a janela pai (top-level navigation) para um site malicioso.
  3. Vazamento de Dados: Se a segurança não for configurada, o site pai e o site filho podem tentar trocar informações indevidamente.

Como fazer vs Como não fazer

✅ Como fazer

  • Sempre utilize o atributo sandbox em iframes para aplicar o princípio do privilégio mínimo:
    html
    <!-- Permite scripts e formulários, mas impede acesso a cookies do pai ou navegação do pai -->
    <iframe src="https://third-party.com" sandbox="allow-scripts allow-forms"></iframe>
  • Utilize o cabeçalho X-Frame-Options ou a diretiva frame-ancestors do CSP para impedir que seu site seja incorporado por domínios não autorizados (proteção contra Clickjacking).
  • Utilize o atributo referrerpolicy="no-referrer" se não quiser que o site dentro do iframe saiba de onde o usuário veio.

❌ Como não fazer

  • Nunca use iframes sem o atributo sandbox ao carregar conteúdo de terceiros ou conteúdo gerado por usuários.
  • Não incorpore sites que não utilizam HTTPS.
  • Não permita permissões desnecessárias no atributo sandbox (ex: evite allow-same-origin se o conteúdo for de uma fonte não confiável, pois isso permite que o iframe acesse os cookies do próprio domínio se ele estiver na mesma origem).
  • Evite o uso de iframes para funcionalidades críticas de segurança (como telas de login) se houver alternativas mais seguras, como redirecionamentos ou modais controlados pela própria aplicação.