Los enlaces a destinos de origen cruzado no son seguros
Published on • Updated on
Cuando se vincula a una página de otro sitio mediante el atributo target="_blank"
, puede exponer su sitio a problemas de rendimiento y seguridad:
- La otra página puede ejecutarse en el mismo proceso que su página. Si la otra página ejecuta mucho JavaScript, el rendimiento de su página puede verse afectado.
- La otra página puede acceder a su objeto de
window
con la propiedadwindow.opener
. Esto puede permitir que la otra página redirija su página a una URL maliciosa.
Agregar rel="noopener"
o rel="noreferrer"
a sus target="_blank"
evita estos problemas.
A partir de la versión 88 de Chromium, los anclajes con target="_blank"
obtienen automáticamente un comportamiento noopener
de forma predeterminada. La especificación explícita de rel="noopener"
ayuda a proteger a los usuarios de navegadores heredados, incluidos Edge Legacy e Internet Explorer.
Cómo fallar la auditoría de destino de origen cruzado de Lighthouse
Lighthouse señala enlaces inseguros a destinos de origen cruzado:
![Auditoría Lighthouse que muestra enlaces inseguros a destinos de origen cruzado](https://wd.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/ztiQKS8eOfdzONC7bocp.png?auto=format)
Lighthouse utiliza el siguiente proceso para identificar enlaces como inseguros:
- Reúne todas las etiquetas
<a>
que contengan el atributotarget="_blank"
, pero no losrel="noopener"
orel="noreferrer"
. - Filtra los enlaces del mismo host.
Debido a que Lighthouse filtra los enlaces del mismo host, existe una situación limítrofe que debe tener en cuenta si está trabajando en un sitio grande: si una página contiene un enlace target="_blank"
a otra página de su sitio sin usar rel="noopener"
, las implicaciones de rendimiento de esta auditoría aún se aplican. Sin embargo, no verá estos enlaces en los resultados de Lighthouse.
Each Best Practices audit is weighted equally in the Lighthouse Best Practices Score. Learn more in The Best Practices score.
Cómo mejorar el rendimiento de su sitio y prevenir vulnerabilidades de seguridad
Agregue rel="noopener"
o rel="noreferrer"
a cada enlace identificado en su informe Lighthouse. En general, cuando use target="_blank"
, siempre agregue rel="noopener"
o rel="noreferrer"
:
<a href="https://examplepetstore.com" target="_blank" rel="noopener">
Example Pet Store
</a>
rel="noopener"
evita que la nueva página pueda acceder a lawindow.opener
y garantiza que se ejecute en un proceso separado.rel="noreferrer"
tiene el mismo efecto, pero también evita que la cabeceraReferer
se envíe a la nueva página. Consulte Tipo de enlace "noreferrer".
Consulte la publicación Compartir recursos de origen cruzado de forma segura para obtener más información.
Recursos
Updated on • Improve article