Saltar al contenido

¿Puedes usar rel=opener con window.open()?

Te recomendamos que pruebes esta resolución en un entorno controlado antes de pasarlo a producción, un saludo.

Solución:

La especificación HTML es clara al respecto, puedes comprobarlo aquí.

Compartiré el primer segmento del window.open pasos:

La ventana abre pasos, dada una string URL, un string objetivo, y un
string características, son las siguientes:

  1. Si el nivel de anidamiento de terminación del bucle de eventos es distinto de cero, devuelve
    null.

  2. Deje que el contexto de exploración de origen sea el contexto de exploración del objeto global de entrada.

  3. Si el objetivo es el vacío string, luego establezca el objetivo en “_blank”.

  4. Deje que tokenizedFeatures sea el resultado de tokenizar características.

  5. Que noopener y noreferrer sean false.

  6. Si tokenizadoCaracterísticas[“noopener”] existe, entonces:

    1. Establezca noopener en el resultado de analizar tokenizedFeatures[“noopener”]
      como una característica booleana.

    2. Quitar tokenizedFeatures[“noopener”].

  7. Si tokenizadoCaracterísticas[“noreferrer”] existe, entonces:

    1. Establecer noreferrer al resultado de analizar tokenizedFeatures[“noreferrer”] como una característica booleana.

    2. Quitar tokenizedFeatures[“noreferrer”].

  8. Si no hay referente true, luego establezca noopener en true.

También puede ver en este rastreador de errores, que está vinculado a la confirmación que agregó eso, que la edición solo se refiere a los anclajes. Yo cito

Anchor target=_blank implica rel=noopener

La razón por la que esta edición solo se realiza en anclas es porque al usar window.open para desencadenar este ataque caería en XSS ya que requiere inyectar código JavaScript.

El problema de seguridad al que se refiere este error es que un usuario puede poner un código incorrecto en una página a la que hace referencia pero a la que no tiene acceso. Puede ver que no requiere el mismo origen aquí. Otro posible vector de ataque es cuando hay contenido generado por el usuario en su sitio web, pero esto es poco probable ya que es probable que escape de la entrada del usuario para XSS.

Nota final, esta edición ya está disponible para que la pruebes en Chrome Canary.

No sé cómo probar esto para confirmar que funciona al 100%, pero de acuerdo con los documentos de window.open, el windowFeatures el parámetro se puede pasar como separado por comas key-valor pares donde tienes key=value para que puedas hacer noopener=false. Si hace esto en la versión actual de Chrome, entonces el window.opener de la nueva ventana es en realidad la ventana anterior como si no hubiera configurado nada, así que supongo que funcionará en la nueva versión de Chrome cuando salga.

Sección de Reseñas y Valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *