Un código QR no parece un enlace. Nadie pasa el ratón por encima para ver adónde lleva, y el filtro de correo solo ve una imagen en blanco y negro. Por esa brecha el quishing, el phishing mediante códigos QR, creció un 146% en el primer trimestre de 2026: pasó de 7,6 millones de ataques en enero a 18,7 millones en marzo, según el informe trimestral de amenazas por correo de Microsoft. Fue el vector que más creció en el periodo.
La ironía es que el recurso favorito de los estafadores, el código QR dinámico, es también la mejor defensa de quien imprime QR en envases, menús, facturas o carteles. A continuación, cómo funciona el ataque y qué se puede hacer, con código.
¿Qué es el quishing y por qué pasa los filtros?
En el phishing común, el enlace está en el texto. Los filtros de correo y los navegadores leen ese texto, lo comparan con listas de dominios peligrosos y lo bloquean. En el quishing, la URL está codificada en los módulos de una imagen. Muchas herramientas de seguridad no decodifican la imagen, así que el mensaje pasa limpio.
El segundo efecto es el cambio de dispositivo. Quien recibe el correo en el portátil apunta la cámara del móvil a la pantalla. El ataque sale de un ordenador con antivirus, proxy corporativo y extensiones de seguridad y llega a un navegador móvil, con la barra de direcciones recortada y prisa por resolver.
Cómo usan los estafadores el código QR dinámico
Un QR estático guarda la URL final dentro de la imagen. Un QR dinámico guarda un enlace corto, y el servidor decide adónde redirigir en cada escaneo. El estafador aprovecha esa separación: en el momento del envío, el QR apunta a una página inofensiva. Si un filtro más listo decodifica la imagen y sigue el enlace, encuentra algo limpio y deja pasar el mensaje. Horas después, el destino se cambia a la página falsa.
Unit 42, el equipo de investigación de Palo Alto Networks, documentó esta táctica: los acortadores de QR convierten una imagen estática en un endpoint dinámico, y el atacante cambia la redirección cuando quiere. En uno de los casos analizados, el código pasaba por un CAPTCHA antes de llegar a una página falsa de Outlook. El análisis en el momento de la entrega no basta, porque el destino de mañana todavía no existe.
Para el usuario final, la regla práctica es sencilla: si un parquímetro, una empresa de envíos o un banco te pide actuar mediante un QR, ignora el código y abre la app oficial que ya tienes, o escribe la dirección a mano. Para quien publica QR, la lección es otra: tus clientes desconfiarán cada vez más, y el QR tiene que darles motivos para confiar.

El riesgo para quien imprime códigos QR
Si tu empresa pone QR en productos o material impreso, el problema no es solo que el cliente caiga en una estafa. Es que caiga en una estafa que parecía tuya. Tres escenarios aparecen a menudo:
- Pegatina encima: alguien pega un QR falso sobre el tuyo en una mesa, un tótem o un parquímetro. A simple vista, nada cambia.
- Destino caducado: el dominio de la campaña expiró, lo compró un tercero y el QR impreso en mil envases ahora lleva a otro sitio.
- QR estático con error: la URL tenía un problema o la página dejó de existir, y no hay forma de corregirlo sin reimprimir.
Los tres tienen la misma causa: el QR impreso queda fuera de tu control en cuanto sale de la imprenta. El QR din��mico te devuelve ese control.
Defensa 1: verificar la URL antes de publicar
El primer paso es barato: antes de que una URL se convierta en QR, pregunta si es segura. Vale para los enlaces que escribe tu equipo y, sobre todo, para los que vienen de usuarios, socios o integraciones. La API de Verificación de URL responde en una llamada:
curl -sS 'https://api.respawntech.dev/v1/tools/safety/check?url=https://loja.example.com/promo' \
-H "X-API-Token: $RESPAWN_API_TOKEN"
# { "is_safe": true }async function isSafe(url) {
const res = await fetch(
`https://api.respawntech.dev/v1/tools/safety/check?url=${encodeURIComponent(url)}`,
{ headers: { "X-API-Token": process.env.RESPAWN_API_TOKEN } }
);
const { is_safe } = await res.json();
return is_safe;
}
if (!(await isSafe(targetUrl))) {
throw new Error("Destino bloqueado: URL marcada como insegura");
}En el Código QR Dinámico esta comprobación ya viene incluida: las URLs maliciosas se rechazan al crear el QR con el error dynamic_qr.malicious_url, y un destino que se vuelva inseguro después lleva al visitante a la página de QR no disponible con reason=safety_risk en lugar de redirigirlo.
Defensa 2: cambiar el destino sin reimprimir
¿Descubriste que la página de destino fue comprometida o que la campaña terminó? Con un QR dinámico, la imagen impresa sigue igual y solo cambia el destino. Es un PATCH, y editar el destino no cuesta créditos:
curl -sS -X PATCH "https://api.respawntech.dev/v1/tools/image/qr-code/dynamic/$QR_ID" \
-H "X-API-Token: $RESPAWN_API_TOKEN" \
-H 'Content-Type: application/json' \
-d '{ "target_url": "https://loja.example.com/aviso-de-seguranca" }'await fetch(`https://api.respawntech.dev/v1/tools/image/qr-code/dynamic/${qrId}`, {
method: "PATCH",
headers: {
"X-API-Token": process.env.RESPAWN_API_TOKEN,
"Content-Type": "application/json",
},
body: JSON.stringify({ target_url: "https://loja.example.com/aviso-de-seguranca" }),
});Ante un incidente, conviene más apuntar a una página de aviso que desactivar el QR. Quien escanee entiende lo que pasó en lugar de pensar que el código está roto.
Defensa 3: controles que limitan el daño
No todo QR necesita funcionar para siempre ni para cualquiera. Cuanto menor sea la ventana de uso, menos vale para quien quiera abusar de él. Los campos siguientes sirven tanto al crear como en un PATCH:
| Campo | Qué hace | Cuándo usarlo |
|---|---|---|
| expires_at | Desactiva el QR en una fecha | Promociones, eventos, entradas |
| scan_limit | Lo desactiva tras N escaneos | Cupones de uso limitado, regalos |
| password | Pide una contraseña antes de redirigir | Material interno, documentos restringidos |
| expired_url / limit_reached_url | Lleva a una página tuya cuando el QR caduca o se agota | Evitar un callejón sin salida al terminar la campaña |
| custom_domain_id | Usa tu dominio en el enlace corto | Reforzar la marca y enseñar al cliente a reconocer tu dirección |
El dominio propio merece atención. Cuando todos los QR de tu empresa abren en qr.tuempresa.com, es fácil orientar al cliente: si la dirección es otra, desconfía. Es la misma lógica de enseñar a revisar el candado del navegador, aplicada al escaneo.
Checklist para equipos que usan códigos QR
- Verifica toda URL antes de convertirla en QR, incluidas las de socios y usuarios.
- Prefiere QR dinámico en cualquier material impreso que dure más de una semana.
- Usa un dominio propio en el enlace corto y comunícalo a tus clientes.
- Define caducidad o límite de escaneos en campañas con fecha de fin.
- Sigue los escaneos: un pico fuera de horario o desde una región inesperada puede indicar un QR copiado.
- Nunca lleves al cliente directamente de un escaneo a un inicio de sesión o pago sin contexto. Si es inevitable, deja claro el dominio.
- Revisa físicamente los QR en lugares públicos: la pegatina superpuesta es la estafa más barata que existe.
Preguntas frecuentes
¿Un código QR puede tener virus?
El QR en sí es solo texto codificado, normalmente una URL. El peligro está en el destino: una página que imita un inicio de sesión, pide datos de tarjeta o descarga una app maliciosa.
¿Cómo saber si un código QR es seguro?
Antes de abrirlo, revisa la dirección que muestra la cámara. Desconfía de dominios extraños, acortadores genéricos y páginas que piden contraseña o pago de entrada. En tus sistemas, verifica la URL por API antes de mostrarla o redirigir.
¿Un QR dinámico es más peligroso que uno estático?
Depende de quién lo controle. En manos de un estafador, el destino modificable ayuda a engañar a los filtros. En manos de la empresa que lo imprime, es lo que permite corregir un destino comprometido sin retirar material.
¿Qué hago si alteran un QR de mi empresa?
Si es dinámico, apunta el destino a una página de aviso de inmediato e investiga. Si es estático, retira el material y sustitúyelo por un QR dinámico con dominio propio.
Empieza por los QR que ya están en la calle
El quishing crece porque explota el punto que nadie mira. Para quien imprime QR, la defensa es tratar cada código como un enlace que debes seguir controlando después de la imprenta: verificar el destino, poder cambiarlo y limitar la ventana de uso.
El Código QR Dinámico ya rechaza destinos maliciosos y permite cambiar el enlace sin reimprimir. La Verificación de URL lleva la misma comprobación al resto de tu sistema. Los detalles de cada campo están en la documentación.
Sobre el autor
Rychard
Equipo Respawn Tech Dev
Quienes construyen y mantienen las APIs de Respawn Tech Dev.