Soporte » Guías – Resolución de problemas » noopener y noreferrer en WordPress 4.7.4

  • Moderador almendron

    (@almendron)


    En la versión 4.7.4 se ha añadido al TinyMCE la adición automática de “noopener” y “noreferrer” al campo “rel” de un enlace siempre y cuando el “target=”_blank”.
    Se trata de una medida de seguridad que soluciona una vulnerabilidad que se produce cuando indicamos que un enlace se abra en una nueva ventana.
    Por lo que he podido comprobar, esa adición no se realiza hasta que no editamos una entrada. Eso significa que nuestras antiguas entradas no sufrirán modificación alguna salvo que las editemos.

    Ahora bien, esta solución plantea un problema ya que muchos plugins usan el campo “rel” de los enlaces y esa medida interfiere con ellos. Para los que por este u otro motivo no quieran usar esta nueva característica tienen las siguientes opciones:

    [Observación preliminar: la adición solo se realiza si nosotros, de un modo u otro, hemos indicado de forma manual que el enlace se abra en una nueva ventana.]

    1) Al poner un enlace externo no indicar que se abra en una nueva ventana. En lugar de esto, podemos usar un plugin que añada esa característica. Esto hará que TinyMCE no añada nada.
    Podéis usar https://es.wordpress.org/plugins/seo-nofollow-external/ (es muy antiguo pero funciona perfectamente incluso en PHP 7).

    2) En el caso de enlaces propios (es decir, donde no funcionará el plugin del punto anterior), no queda otra que NO abrir en una nueva ventana. Aunque accedamos al código y borremos lo añadido por el editor, al actualizar vuelve a aparecer.

    3) En el caso de enlaces propios asociados a imágenes, la única opción es no marcar la casilla “Abrir enlace en una pestaña nueva”.

    4) La solución definitiva aunque no aconsejable. Añadir este código al archivo functios.php del tema o al plugin de “funciones” personal si lo tienes.

    // Note that this intentionally disables a tinyMCE security feature.
    // Use of this code is NOT recommended.
    add_filter('tiny_mce_before_init','tinymce_allow_unsafe_link_target');
    function tinymce_allow_unsafe_link_target( $mceInit ) {
    	$mceInit['allow_unsafe_link_target']=true;
    	return $mceInit;
    }
    • Este debate fue modificado hace 7 meses por  almendron.
Viendo 9 respuestas - 1 de 9 (de 9 total)
  • Moderador almendron

    (@almendron)

    Como es obvio, cualquier plugin que uséis para abrir en una nueva ventana los enlaces externos de forma automática presentará la vulnerabilidad.

    En el caso del plugin SEO Nofollow External, podéis evitarlo modificando el archivo “nofollow-external.php” de dicho plugin:

    Cambiar
    $link = preg_replace("%(href=\S(?!$mu_url))%i", 'rel="nofollow" $1', $link);
    por
    $link = preg_replace("%(href=\S(?!$mu_url))%i", 'rel="nofollow noopener noreferrer" $1', $link);

    Cambiar
    $link = preg_replace('/rel=S(?!nofollow)\S*/i', 'rel="nofollow"', $link);
    por
    $link = preg_replace('/rel=S(?!nofollow)\S*/i', 'rel="nofollow noopener noreferrer"', $link);

    Moderador almendron

    (@almendron)

    Por último, comentaros que eliminar la nueva opción no es aconsejable. Las medidas indicadas para evitarlas solo deberían utilizarse en caso de que esta nueva característica os ocasione algún problema.
    La mejor solución sin dudad sería resolver el problema de una forma que os permita utilizar esta nueva característica.

    Moderador almendron

    (@almendron)

    Por lo que estoy leyendo, la vulnerabilidad se produce solo cuando se llega a una página maliciosa a través de un enlace con el atributo “abrir en una nueva ventana”.
    Esto significa que poner dicho atributo a un enlace de nuestro propio dominio no representa peligro alguno.
    He pedido a otros voluntarios que opinen sobre este supuesto ya que, de tener razón, la mejor solución sería:
    1) Usar el código que he puesto para desactivar esa medida de seguridad.
    2) Usar el plugin (con la modificación pertinente) que he comentado o cualquier otro que haga los mismo para el caso de los enlaces externos. De esta forma nos aseguramos de nuestros visitantes puedan pinchar en cualquier enlace sin miedo alguno.

    Moderador Fernando Tellado

    (@fernandot)

    La mejor opción es no desactivar noopener y noreferrer, claramente, pues es una medida de seguridad importante. Y si algún plugin no funciona bien con esta medida de seguridad entonces modificar el plugin o usar otro que se adapte. Es mi opinión

    Moderador almendron

    (@almendron)

    Yo he propuesto desactivar esa medida en el editor e implantarla solo para los enlaces externos a través de un plugin. Con esto conseguimos que otros plugins sigan funcionando mientras mantenemos la seguridad.

    Una pregunta, ¿como puedo solucionar el siguiente problema?
    Mi web es una pagina de enlaces de tiendas de moda y muchas de las tiendas a las que enlazo ven el trafico que les mando desde mi web, ahora con este sistema, ellos no ven la cantidad de clientes que les mando y ademas también me interesa que no se vayan de mi pagina y pierdan mi rastro, ¿Como puedo solucionarlo?
    Muchas gracias y un saludo

    Moderador Fernando Tellado

    (@fernandot)

    @fonorola Con no poner target blank solucionado

    Moderador almendron

    (@almendron)

    @fernandot : ¿ya lo han cambiado? ¿ya solo lo añade a los enlaces marcados con “blank”?

    Muchas gracias por vuestra ayuda.
    Un cordial saludo.

Viendo 9 respuestas - 1 de 9 (de 9 total)
  • Debes estar registrado para responder a este tema.