Cuando vinculas una página de otro sitio con el atributo target="_blank"
,
puedes exponer tu sitio a problemas de rendimiento y seguridad:
- Es posible que la otra página se ejecute en el mismo proceso que la tuya. Si la otra página ejecuta mucho JavaScript, el rendimiento de tu página puede verse afectado.
- La otra página puede acceder a tu objeto
window
con la propiedadwindow.opener
. Esto podría permitir que la otra página redireccione tu página a una URL maliciosa.
Agregando rel="noopener"
o rel="noreferrer"
a tus vínculos target="_blank"
evita estos problemas.
Cómo falla la auditoría de destinos de origen cruzado de Lighthouse
Lighthouse marca los vínculos no seguros a destinos de origen cruzado:
Lighthouse usa el siguiente proceso para identificar los vínculos como no seguros:
- Recopila todas las etiquetas
<a>
que contienen el atributotarget="_blank"
. pero no con los atributosrel="noopener"
nirel="noreferrer"
. - Filtra los vínculos del mismo host.
Como Lighthouse filtra los vínculos del mismo host,
Hay un caso límite que debes tener en cuenta si trabajas en un sitio grande:
si una página contiene un vínculo target="_blank"
a otra página de tu sitio sin usar rel="noopener"
,
se siguen aplicando las implicaciones de rendimiento de esta auditoría.
Sin embargo, no verás estos vínculos en los resultados de Lighthouse.
Cómo mejorar el rendimiento de tu sitio y evitar vulnerabilidades de seguridad
Agregar rel="noopener"
o rel="noreferrer"
a cada vínculo identificado en el informe de Lighthouse.
En general, cuando usas target="_blank"
, siempre
agrega rel="noopener"
o rel="noreferrer"
:
<a href="https://examplepetstore.com" target="_blank" rel="noopener">
Example Pet Store
</a>
rel="noopener"
impide que la página nueva pueda para acceder a la propiedadwindow.opener
y garantiza que se ejecute en un proceso independiente.rel="noreferrer"
tiene el mismo efecto pero también evita el encabezadoReferer
se envíen a la nueva página. Consulta Tipo de vínculo "noreferrer".
Consulta el artículo Cómo compartir recursos de origen cruzado de forma segura. publicación para obtener más información.