Atributo target
El atributo target en un enlace (<a>) o en formularios (<form>) indica dónde se mostrará el recurso vinculado al hacer clic o al enviar el formulario. Sus valores más comunes son:
_self: Abre el enlace en la misma ventana o pestaña (comportamiento por defecto)._blank: Abre el enlace en una nueva pestaña o ventana._parent: Abre el enlace en el framing parent si existe (caso de uso con framesets)._top: Abre el enlace en toda la ventana, saliendo de todos los frames.- nombre-de-ventana: Abre el enlace en una ventana o pestaña con ese nombre (útil para grupos de enlaces).
Ejemplo básico
Visitar Ejemplo (self) Visitar Ejemplo (blank) Visitar Otra (misma ventana)
Consideraciones
- Usar
_blanksin precauciones de seguridad puede exponer tu sitio a reverse tabnabbing. - En contextos de single-page applications o iframes,
_parenty_topayudan a controlar dónde recarga el contenido. - Los identificadores de ventana (por ejemplo,
target='miVentana') pueden agrupar múltiples enlaces en la misma pestaña dedicada.
Atributo rel
El atributo rel especifica la relación entre el documento actual y el recurso vinculado. Es fundamental para mejorar la seguridad, SEO y el comportamiento de navegadores y agentes de usuario.
Valores de rel orientados a seguridad
| Valor | Descripción |
|---|---|
| noopener | Evita que la nueva pestaña tenga acceso a window.opener, mitigando el reverse tabnabbing. |
| noreferrer | No envía la cabecera HTTP Referer al abrir el enlace; incluye implícitamente noopener. |
| external | Indica que el enlace lleva fuera del dominio actual. |
| nofollow | Informa a buscadores de que no sigan ese enlace para fines de SEO. |
| ugc | “User Generated Content”, marca enlaces generados por usuarios. |
| sponsored | Indica que el enlace es publicidad o patrocinio. |
Ejemplos combinados
Ir a Sitio Externo Ver Oferta Patrocinada
Buenas prácticas de seguridad
-
Siempre usa rel='noopener' cuando emplees
target='_blank', para evitar ataques de reverse tabnabbing.Enlace seguro
-
Agrega noexcept noreferrer si no deseas que tu URL aparezca en el Referer que se envía al destino:
Enlace sin referer
-
Clasifica enlaces según su propósito usando rel='nofollow', 'ugc' o 'sponsored' para transparencia y mejor control SEO:
nofollow: Evita que el enlace transfiera autoridad SEO.ugc: Para contenido generado por usuarios (comentarios, foros).sponsored: Para enlaces pagados o de patrocinio.
- Revisa políticas de CORS y Content Security Policy (CSP) para reforzar el aislamiento de recursos externos.
- Valida siempre URLs dinámicas (provistas por usuarios) y escapa caracteres especiales para evitar inyección de código o ataques XSS.
Detalles profundos y escenarios avanzados
Cuando un enlace se abre con target='_blank', la nueva ventana obtiene una referencia al window.opener de la página origen. Con JavaScript, podría ejecutarse código malicioso como:
Por ello, rel='noopener' redefine internamente window.opener a null, impidiendo estas redirecciones forzadas.
Además, ten en cuenta:
- Política de Referer: Con
rel='noreferrer'no se envía la cabeceraReferer. Útil cuando no quieres exponer la URL de tu página de origen. - Impacto en SEO: Relacionar
rel='external'sirve de pista semántica para analizadores automáticos, aunque no siempre es interpretado por buscadores grandes. - Control de ventanas: Si nombras la ventana, múltiples clics en distintos enlaces con el mismo nombre reutilizarán la ventana ya abierta.
Resumen de combinaciones más seguras
| Escenario | HTML recomendado |
|---|---|
| Abrir en nueva pestaña sin riesgos | <a href='...' target='_blank' rel='noopener'>... |
| No exponer Referer y bloquear opener | <a href='...' target='_blank' rel='noopener noreferrer'>... |
| Enlace patrocinado en nueva pestaña | <a href='...' target='_blank' rel='noopener sponsored nofollow'>... |
Con estas pautas y ejemplos profundos, dominarás el uso de target y rel en HTML5 garantizando tanto una buena experiencia de usuario como la seguridad y control SEO de tu sitio.
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.