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
windowcom a propriedadewindow.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:
O Lighthouse usa o seguinte processo para identificar links como não seguros:
- Reúna todas as tags
<a>que contenham o atributotarget="_blank"mas não os atributosrel="noopener"ourel="noreferrer". - 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 propriedadewindow.openere garante que ele seja executado em um processo separado.rel="noreferrer"tem o mesmo efeito mas também impede que o cabeçalhoReferersejam 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.