Escanee una página pública en busca de 25 tipos de secretos filtrados
Las apps hechas con vibe coding suelen enviar claves al navegador. Indique la dirección de una sola página suya y el escáner lee el HTML de esa página y los archivos de script que enlaza, en busca de claves API, tokens y URL de bases de datos que un visitante podría copiar. Los valores se muestran enmascarados.
Resultado
Lo que este escaneo no puede ver
El escáner solo lee los archivos que el navegador de un visitante descarga de la página. No ve secretos que se quedan en el servidor, páginas tras un inicio de sesión, archivos que se cargan después con import() ni source maps. Un resultado limpio no demuestra que la app sea segura.
Los 25 tipos de clave
20 de ellos son secretos que nunca deben llegar a un navegador. 5 son públicos por diseño.
Las claves marcadas como públicas, como una clave anon de Supabase, una apiKey de Firebase o una clave publicable de Stripe, están pensadas para el navegador. Solo son seguras mientras las reglas de su base de datos protejan los datos que hay detrás.
| Tipo de clave | ID | Gravedad | Clase |
|---|---|---|---|
| Clave API de OpenAI | openai-key | Crítica | Secreto |
| Clave API de Anthropic | anthropic-key | Crítica | Secreto |
| Clave secreta live de Stripe | stripe-secret | Crítica | Secreto |
| Clave secreta de prueba de Stripe | stripe-test-secret | Media | Secreto |
| Clave publicable de Stripe | stripe-publishable | Info | Público por diseño |
| ID de clave de acceso de AWS | aws-access-key | Alta | Secreto |
| Clave de acceso secreta de AWS | aws-secret | Crítica | Secreto |
| Token de GitHub | github-token | Crítica | Secreto |
| Clave API de Google | google-api-key | Info | Público por diseño |
| apiKey de la configuración web de Firebase | firebase-web-config | Info | Público por diseño |
| Clave service_role de Supabase | supabase-service-role-jwt | Crítica | Secreto |
| Clave anon de Supabase | supabase-anon-jwt | Info | Público por diseño |
| JSON Web Token | jwt-other | Baja | Secreto |
| Clave secreta de Supabase | supabase-secret-key | Crítica | Secreto |
| Clave publicable de Supabase | supabase-publishable-key | Info | Público por diseño |
| Token de Slack | slack-token | Crítica | Secreto |
| URL de webhook de Slack | slack-webhook | Alta | Secreto |
| Clave API de SendGrid | sendgrid-key | Crítica | Secreto |
| SID de clave API de Twilio | twilio-key | Alta | Secreto |
| Clave API de Mailgun | mailgun-key | Alta | Secreto |
| Bloque de clave privada | private-key-block | Crítica | Secreto |
| URL de base de datos con contraseña | database-url | Crítica | Secreto |
| Token de npm | npm-token | Crítica | Secreto |
| Token de Hugging Face | huggingface-token | Alta | Secreto |
| Clave API de Resend | resend-key | Alta | Secreto |
Preguntas
¿Qué lee el escáner de secretos?
Lee el HTML de la página y hasta 14 archivos de script que enlaza, 3 MB en total, los primeros 512 KB de la página y los primeros 1 MB de cada archivo. Busca formatos de clave conocidos, como claves API, tokens de acceso, bloques de clave privada y URL de bases de datos con contraseña.
¿Dónde se ejecuta el escaneo y cuánto tarda?
El escaneo se ejecuta en su navegador; nuestro servidor solo obtiene los archivos para él, una solicitud por archivo. No se guarda nada. En un sitio lento, un escaneo puede tardar hasta un minuto y medio aproximadamente.
¿Qué no puede ver el escáner?
Secretos que solo existen en el servidor, páginas tras un inicio de sesión, fragmentos que la página carga después con import() y source maps. Tampoco puede saber si una clave encontrada sigue activa. Un resultado limpio no demuestra que la app sea segura.
¿Por qué algunas claves se marcan como públicas por diseño?
Una clave anon o publicable de Supabase, una apiKey de Firebase, una clave API de Google y una clave publicable de Stripe están hechas para enviarse al navegador. Identifican su proyecto y solo conceden lo que permiten las reglas de su base de datos, las restricciones de la API y las comprobaciones del servidor. Se indican para que confirme que esas reglas existen, no porque la clave en sí sea una filtración.
¿Qué hago si se filtra un secreto real?
Rótelo primero: cree una clave nueva en el proveedor y revoque la anterior. Después pase la clave nueva a código del servidor o a variables de entorno y vuelva a desplegar. Borrar la clave del código no basta, porque el valor antiguo sigue en compilaciones anteriores, cachés y en el historial de git.
¿Por qué las apps hechas con vibe coding filtran claves tan a menudo?
El código escrito deprisa con herramientas de IA suele llamar a una API de pago o privilegiada directamente desde el navegador, y la clave acaba en el script que descarga cada visitante. La seguridad en el vibe coding empieza por mantener esas llamadas en el servidor.