Saltar al contenido

Evita ataques crossdomain en páginas abiertas con target=”_blank”, el comando rel=”noopener”

Una practica muy simple y común, abrir nueva ventana con  target=»_blank», sin embargo ello abre una vulnerabilidad para ciertos ataques phishing. Veamos como solventarlo:

Veamos, supongamos que quieres que un link se abra en una nueva pestaña, así que le pones target=”_blank”. Al hacerlo de esta forma la página que has abierto en la nueva pestaña, mediante el selector window.opener puede modificar cosas a base de Javascript en la página desde la que se abrió el enlace.

La mayoría de navegadores modernos limitan las posibilidades de esto y bloquean muchas de las acciones invocadas desde la ventaja hija sobre la padre, pero lo que se han dejado sin proteger es que dicha ventana hija puede acceder a la propiedad window.opener.location, y de esta forma mandarnos a una página desde la que hacer un ataque de phising.

 

El comando rel=”noopener”

¿Solución? Bueno, si es un enlace basta con el modificador noopener y el noreferrer:

<a href="http://misupercoositio432.com" target="_blank" rel="noopener noreferrer"/>

El noreferrer es necesario porque Mozilla Firefox no soporta noopener.

¿Y con Javascript?

¿Y qué pasa si abrimos la ventana mediante Javascript utilizando el método window.open()? Pues que nos encontramos la misma vulnerabilidad.

¿Cómo la solucionamos? Veamos con este ejemplo:

var newWnd = window.open();
newWnd.opener = null;

 

Vale, espero el tip se tea util en tus futuros proyectos.

Enlaces relacionados:


[:]