Links para destinos de origem cruzada não são seguros

Ao criar um link para uma página em outro site usando o atributo target="_blank", você pode expor seu site a problemas de desempenho e segurança:

  • A outra página pode executar o mesmo processo que a sua. Se a outra página estiver executando muito JavaScript, o desempenho da sua página pode ser afetado.
  • A outra página pode acessar o objeto window com a propriedade window.opener. Isso pode permitir que a outra página redirecione sua página para um URL malicioso.

Adicionando rel="noopener" ou rel="noreferrer" aos seus links target="_blank" evita esses problemas.

Como a auditoria de destino de origem cruzada do Lighthouse falha

O Lighthouse sinaliza links não seguros para destinos de origem cruzada:

Auditoria do Lighthouse mostrando links não seguros para destinos de origem cruzada

O Lighthouse usa o seguinte processo para identificar links como não seguros:

  1. Reúna todas as tags <a> que contenham o atributo target="_blank" mas não os atributos rel="noopener" ou rel="noreferrer".
  2. Filtre os links com o mesmo host.

Como o Lighthouse filtra os links de mesmo host, há um caso extremo que você precisa conhecer se estiver trabalhando em um site grande: se uma página tiver um link target="_blank" para outra página do seu site sem usar rel="noopener", as implicações de desempenho dessa auditoria ainda se aplicam. No entanto, você não vai encontrar esses links nos resultados do Lighthouse.

Como melhorar o desempenho do seu site e evitar vulnerabilidades de segurança

Adicionar rel="noopener" ou rel="noreferrer" a cada link identificado no relatório do Lighthouse. Em geral, ao usar target="_blank", sempre adicione rel="noopener" ou rel="noreferrer":

<a href="https://examplepetstore.com" target="_blank" rel="noopener">
  Example Pet Store
</a>
  • rel="noopener" impede que a nova página para acessar a propriedade window.opener e garante que ele seja executado em um processo separado.
  • rel="noreferrer" tem o mesmo efeito mas também impede que o cabeçalho Referer sejam enviadas para a nova página. Consulte Tipo de link "noreferrer".

Consulte a seção Compartilhar recursos de origem cruzada com segurança. para mais informações.

Recursos