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 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.opener
e garante que ele seja executado em um processo separado.rel="noreferrer"
tem o mesmo efeito mas também impede que o cabeçalhoReferer
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.