Un operador genera la contraseña de una base de datos, pulsa Copiar y cambia al terminal. Durante el medio minuto siguiente, esa cadena existe a la vez en el generador, en el portapapeles del sistema y en cualquier cuadro que pueda recibir el siguiente pegado. Casi todo el mundo verifica solo la primera mitad: si generar subió algo. En otra nota se explica cómo confirmar en Red que el texto plano no salió del navegador. La segunda mitad suele saltarse: cuando Copiar ya ha funcionado, quién más puede leer ese búfer.

Esto no es un recorrido por cómo crear una contraseña fuerte o memorable, ni un inventario de funciones del botón Copiar. La pregunta cabe en una frase: una vez que la contraseña está en el portapapeles, qué tipos de programas pueden seguir leyéndola. El control Copiar de MyPassGen llama a navigator.clipboard.writeText y escribe la cadena en el portapapeles del sistema. En el sitio no hay almacén de contraseñas. Cierras la pestaña y el servidor no guarda esa cadena. El portapapeles, en cambio, es zona compartida del sistema operativo. La página puede cerrarse. El búfer se queda. Las rutas de abajo salen de la especificación, de ajustes del sistema y de pasos que puedes ejecutar tú.

Primero, separa el trabajo

Si un gestor de contraseñas puede rellenar el campo, no copies. Cuando no quede más remedio, haz las comprobaciones de abajo con una cadena de prueba que nunca desbloquee una cuenta real. Tras un pegado correcto, copia un solo carácter inútil para sobrescribir. Si un colega remoto necesita el secreto, envía un enlace de un solo uso en lugar de dejar el texto plano en el portapapeles o en un chat de grupo.

Al copiar, el secreto ya salió de la página

El cuadro de un generador pertenece a la pestaña actual. El portapapeles no pertenece a ninguna pestaña. MDN describe la Clipboard API como lectura y escritura asíncronas del portapapeles del sistema: cuando la escritura termina, el Bloc de notas, un terminal, una ventana de chat y una sesión de escritorio remoto pueden leer, cada uno con sus propias reglas. HTTPS solo cubre el salto de esa página a un servidor. No cubre este búfer en tu equipo.

La llamada antigua document.execCommand('copy') está marcada como obsoleta y las implementaciones no coinciden. Las páginas nuevas deberían usar navigator.clipboard.writeText. Una escritura, por lo general, no pregunta «¿permitir que esta página lea?». Chromium trata clipboard-write como un permiso que puede conceder solo. Firefox y Safari siguen exigiendo un gesto reciente del usuario —un clic o una tecla—, la activación transitoria de la especificación. Pulsar Copiar es ese gesto. Un script que escribe en segundo plano suele fallar en Safari. Por eso algunas páginas se niegan a copiar hasta que haces clic. No es que el sitio se ponga difícil.

MyPassGen usa el mismo camino writeText para una contraseña generada, un enlace de un solo uso y un resultado limpio. Todas las herramientas se abren sin cuenta. Un Copiar correcto solo demuestra que la cadena llegó al portapapeles del sistema. No demuestra quién la leerá unos segundos después, ni que no vaya a aparecer en el historial de Win+V. Tratar «Copiado» como el final de la historia es precisamente cómo se saltan las rutas posteriores.

Lectura web: permisos y el evento pegar

Una página que quiere leer el portapapeles por su cuenta usa navigator.clipboard.readText() o read(). La especificación pide un contexto seguro —HTTPS o localhost— y que la lectura ocurra justo después de que el usuario haya hecho algo en la página. Los navegadores no implementan eso igual. Esa diferencia se puede probar ahora mismo.

Chromium: el permiso clipboard-read

Chrome, Edge y el resto de Chromium piden el permiso clipboard-read de la Permissions API cuando el documento tiene el foco pero la lectura no encaja del todo con la especificación. Si pulsas Permitir, la concesión se queda: scripts del mismo origen pueden volver a leer sin otro aviso. En los ajustes del sitio aparece Portapapeles, y se puede revocar. Un iframe incrustado en la página de otro también tiene que pasar los tokens de Permissions-Policy clipboard-read y clipboard-write. Si el padre nunca los permitió, la llamada del hijo falla. Se confirma en las herramientas para desarrolladores, en Aplicación → Permisos. No es un eslogan.

Firefox y Safari: un menú Pegar de corta vida

Firefox y Safari no piensan ofrecer ese permiso persistente. Cuando la lectura se sale de la especificación pero aún hay activación transitoria, muestran un menú contextual breve con una sola opción Pegar, que se puede pulsar al cabo de un segundo aproximadamente. El contenido del portapapeles del mismo origen a veces se salta ese paso. El de otro origen, casi nunca. Si no pulsas esa opción, el script no obtiene el texto. No es el modelo de Chromium de «permite una vez, lee después».

Cuando pegas tú, la página siempre puede leer

Ctrl+V / Cmd+V, o Pegar en un cuadro, dispara un evento paste. El manejador puede sacar el texto de clipboardData. Se lo diste a la página actual. Eso no es un robo en segundo plano. El riesgo es el foco: un chat, la respuesta de un ticket o la página de ajustes equivocada, y los dedos van más rápido que los ojos. El portapapeles no pregunta «¿vas a pegar una contraseña?».

En el móvil hay otra capa. Desde iOS 14, una app que lee el portapapeles en segundo plano muestra un aviso en la parte superior. Desde iOS 16, una app que lee UIPasteboard directamente —en lugar del menú de pegar del sistema, un atajo de teclado o UIPasteControl— recibe la pregunta de si se permite pegar. Un aviso o un diálogo demuestra que alguien leyó. No demuestra que nadie haya leído nunca. Un momento en silencio solo quiere decir que este intento no se disparó, o que ya lo habías permitido.

No pegues una contraseña recién copiada en un comprobador que sube la cadena

Algunas páginas de «¿me han filtrado?» hacen POST de la contraseña en claro. Una fuga del portapapeles es una ruta local. Pegar en un sitio que sube es una segunda ruta, de salida. La diferencia está en Lista local de contraseñas filtradas vs Have I Been Pwned: qué prueba cada comprobación. Una comprobación local descarga una lista pública de débiles y deja la candidata en el cuadro. Generar y comprobar en local se abren sin cuenta.

Historial del sistema y sincronización

El permiso web solo cubre los scripts de la pestaña actual. El sistema operativo mantiene su propio historial, y puede sincronizarlo con otros dispositivos. Ninguna de las dos rutas pasa por un aviso de clipboard-read.

En Windows 10 y 11, con el historial del Portapapeles activado, Win+V muestra las copias recientes. La nota de Microsoft es concreta: la lista guarda como máximo 25 elementos. Las entradas no ancladas se borran al reiniciar. Las ancladas se quedan. En Configuración también se puede activar la sincronización entre dispositivos: el texto sigue a cualquier PC con la misma cuenta de Microsoft. Cuando una contraseña entra en ese historial, quien esté sentado ante este equipo —y quien esté en un destino sincronizado— puede leer el texto plano en el panel. Anclar es el peor caso. Reiniciar no limpia un elemento anclado. «Borrar todo» tampoco quita los anclados.

El Portapapeles universal de Apple viaja por Handoff. Los dispositivos deben estar cerca, con la misma cuenta de Apple, Bluetooth y Wi-Fi encendidos, y Handoff activado (lo está por defecto). Copias en uno y el de al lado puede pegar. El contenido solo dura un rato, o hasta que cualquiera de los dos copie algo nuevo. La guía de seguridad de la plataforma de Apple es más seca: las apps pueden alcanzar los datos del portapapeles antes de que el usuario haya pegado; con el Portapapeles universal, ese alcance se extiende a otros dispositivos de la misma cuenta de iCloud. El transporte usa el mismo canal de Handoff —emparejamiento BLE 4.2, una clave AES de 256 bits, anuncios en AES-256-GCM—. Eso detiene a un extraño en la radio. No significa «el iPhone de al lado, ya con sesión iniciada, no puede leer esto».

Los gestores de contraseñas tratan el portapapeles como una ventana breve de exposición. 1Password borra un secreto copiado a los 90 segundos por defecto; se puede desactivar en Ajustes de seguridad. Bitwarden ofrece Borrar portapapeles en escritorio, móvil y la extensión del navegador, desde unos 10 segundos hasta 5 minutos, o nunca. Una página generadora en el navegador no suele hacer esto por ti. MyPassGen no arranca una cuenta atrás después de Copiar. Sobrescribir significa que copias otra cosa, o que limpias el panel del sistema tú.

Escritorio remoto, extensiones y pegado erróneo

El escritorio remoto, VNC y muchas apps de reunión redirigen el portapapeles en ambos sentidos por defecto. Copias dentro de la sesión remota y el equipo local puede pegar. Copias en local y el otro extremo puede pegar. La contraseña queda entonces en los dos búferes. Durante una pantalla compartida, los caracteres que acabas de pegar en un terminal también pueden acabar en la grabación de la reunión o en una captura. Esa capa no es «¿subió la página?». La pestaña Red no la muestra.

Una extensión del navegador que pidió clipboardRead / clipboardWrite —o los permisos de host equivalentes de Chromium— puede leer y escribir fuera del modelo de permisos de los scripts de página. El listado de la tienda muestra esos permisos. Un complemento instalado de «mejorar el portapapeles» o «pegar entre dispositivos» es otro canal de sincronización. No te quedes en «¿subió el generador?». Mira también la lista de extensiones.

La fuga más habitual, y la más fácil de reproducir, sigue siendo pegar en el sitio equivocado: el foco está en Slack, en el cuerpo de un correo o en la respuesta de un ticket, y un dedo pulsa pegar. El historial del chat, el archivo del correo y el sistema de tickets conservan el texto plano mucho más tiempo que los 90 segundos de un portapapeles que se limpia. Cuando un colega remoto necesita el secreto una vez, usa un enlace de un solo uso: la clave va detrás de # en la URL, y la página de lectura no pide iniciar sesión. No copies el mismo texto plano al portapapeles y luego a un grupo.

Cinco rutas de fuga, lado a lado

La misma contraseña de prueba recién copiada se parte en al menos cinco rutas. La diferencia no es el nombre de un algoritmo. Es quién puede leer, y si puedes ver esa lectura en el momento.

Ruta Quién puede leer Cómo lo ves ahora
Página readText() Un origen con permiso de lectura o con el menú Pegar Aviso de permiso en Chromium; opción Pegar en Firefox / Safari
Tu propio pegado La página o app con el foco Texto plano en el cuadro; el evento paste
Historial del SO / nube Un usuario local; un dispositivo sincronizado Win+V; pegar en otro dispositivo Apple
Escritorio remoto / reunión Ambas sesiones, una grabación, una captura Si el Bloc de notas del otro extremo puede pegar; la reproducción de la reunión
Extensiones y gestores Una extensión que declaró acceso al portapapeles La página de permisos de la extensión; si el gestor borra a los N segundos

Un generador que saca una cadena aleatoria con Web Crypto, y que nunca pone la contraseña en un cuerpo de Red, solo cierra la ruta de subida. Las otras cuatro filas siguen abiertas. Cuando un gestor puede rellenar, no hace falta el portapapeles. Cuando hay que teclear o hay que copiar, reduce la ventana a «pegar y sobrescribir enseguida».

Compruébalo en el momento

Estos pasos no dependen de la promesa de una marca. Usa una contraseña que no vayas a poner en una cuenta real —por ejemplo, la cadena aleatoria de 16 caracteres que el generador ofrece por defecto—. No ensayes con la contraseña maestra que estás usando.

  1. Abre el generador, crea una contraseña de prueba y cópiala. No la uses para entrar. Abre Red en las herramientas para desarrolladores, activa Conservar registro y confirma que, después de Copiar, los cuerpos de petición y los eventos de analytics no contienen esa cadena. Cómo comprobar las subidas está en Cómo comprobar que el cifrado en el navegador no sube el texto plano.
  2. Abre el Bloc de notas o cualquier cuadro de texto y pega una vez. Confirma que el portapapeles tiene esa cadena. Copia un solo carácter x y pega otra vez: deberías ver x. Eso es sobrescribir funcionando.
  3. En Windows con el historial del Portapapeles activado, pulsa Win+V. El historial debería mostrar la contraseña de prueba. Si ya sobrescribiste, el elemento más reciente debería ser x, y la contraseña puede seguir más abajo en la lista. No ancles. Usa Borrar todo, o sigue copiando texto inútil, hasta que la contraseña desaparezca de la lista.
  4. En la consola de una pestaña en blanco, ejecuta navigator.clipboard.readText().then(console.log, console.error). Chromium debería pedir permiso de lectura o fallar. Firefox o Safari deberían mostrar la opción Pegar o rechazar. No pulses Permitir «para depurar más cómodo». Permitir deja una concesión de lectura persistente para ese origen.
  5. Si un segundo dispositivo tiene sesión en la misma cuenta de Apple o de Microsoft, con la sincronización activada, pega allí. Si aparece la contraseña de prueba, la sincronización en la nube o el Portapapeles universal ya movió el texto plano. Desactiva la sincronización o Handoff, o espera el tiempo de caducidad, y vuelve a probar.
  6. Revisa la lista de permisos de las extensiones instaladas en busca de lectura o escritura del portapapeles. Si hay una sesión de escritorio remoto abierta, pega una vez en el Bloc de notas del otro extremo para ver si la redirección está activa.

El generador de contraseñas de MyPassGen está construido sobre ese límite. El modo aleatorio va de 6 a 128 caracteres, 16 por defecto, con un aviso de debilidad por debajo de 8. Los dos modos extraen con getRandomValues en la pestaña actual. Copiar usa writeText. No hay cuenta ni almacén de contraseñas. Lo que verificas es el aviso de permiso, Win+V y un pegado en el otro dispositivo — no la palabra «Copiado» de la página.

Cómo cerrar la ventana después de pegar

Para la única cadena que hoy tienes que copiar, termina en este orden: confirma que el foco está en el campo de contraseña correcto y entonces pega; copia enseguida un carácter inútil o limpia el historial en el panel del sistema; si otra persona necesita el secreto, pasa a un enlace de un solo uso y deja la clave detrás de #, en lugar de dejar el texto plano en el portapapeles «como copia de seguridad». En las cuentas que un gestor puede rellenar, saca Copiar del flujo.

Trata un PC compartido, una máquina de demostración y un salto de operaciones con el escritorio remoto abierto como «una segunda persona puede leer este portapapeles». No copies ahí una contraseña maestra. Cuando haya que teclear, una frase memorable más larga reduce los errores —y luego cámbiala después de usarla—. Cuatro palabras de una lista de 100 son solo unos 27 bits, demasiado débiles para una maestra; la comparación está en Contraseña aleatoria o frase memorable: cuatro palabras no son automáticamente fuertes.

Cuando sobrescribes después de pegar y rechazas Permitir en un aviso de lectura, ya puedes responder a la pregunta del artículo. Quién puede seguir leyendo después de Copiar depende del permiso web, del historial del sistema, de la sincronización en la nube, de una sesión remota y de tu siguiente pegado. Un generador que no sube solo significa que el registro del servidor no tiene esa cadena. No retira la copia que el sistema operativo ya entregó.

Preguntas frecuentes

¿HTTPS ya protege una contraseña después de copiarla?

No. HTTPS protege el salto del navegador a un servidor. El portapapeles es local. No viaja en esa sesión TLS. Una subida de la página, el historial del sistema, el Portapapeles universal y un pegado erróneo no miran si la barra de direcciones muestra un candado.

Si pulsé Permitir en la lectura del portapapeles, ¿puedo retirarlo?

En Chromium, sí: ajustes del sitio → permisos → Portapapeles → Bloquear. Firefox y Safari no suelen guardar esa lectura como una concesión duradera, así que el siguiente intento sigue pasando por la opción Pegar. No concedas lectura a un origen en el que no confías solo para pulsar una vez menos.

¿Hace falta una cuenta para generar una contraseña? ¿Copiar la sube?

No hace falta cuenta. Generar y copiar deberían quedarse en la pestaña actual. Copiar escribe la cadena en el portapapeles del sistema. No es un POST a un servidor. Abre Red: después de Copiar, el cuerpo de la petición y los eventos de analytics no deberían contener esa contraseña. Cuando un colega necesita una copia, usa un enlace de un solo uso. No trates el portapapeles como un canal de transporte.

¿El relleno automático del gestor es más seguro que copiar?

Para «un viaje menos por el portapapeles del sistema», sí. El relleno automático pone la contraseña en el formulario actual y se salta el historial de Win+V. Si el gestor sigue ofreciendo Copiar, esa copia usa el mismo búfer que una página generadora, y sigue haciendo falta sobrescribir. Si el relleno automático está disponible, no copies.