scanfull
Ejemplo con datos ficticios — así queda el informe de tu sitio.

Informe de seguridad

https://meu-app.lovable.app

14 hallazgos encontrados

0/ 100Crítico
4
Crítico
4
Alto
4
Medio
2
Bajo
0
Informativo

Esta nota es del alcance público — lo que un visitante alcanza sin login. No entran aquí el área logueada, lo que corre en el servidor, ni otros subdominios (api., staging., admin.). El alcance completo está más abajo.

24
páginas visitadas
1010
verificaciones ejecutadas
14
hallazgos

Transparencia del trabajo

Lo que revisamos

Un barrido real, en un navegador de verdad: 24 páginas abiertas y 1010 verificaciones ejecutadas.

Páginas visitadas (24)
  • https://meu-app.lovable.app/
  • https://meu-app.lovable.app/login
  • https://meu-app.lovable.app/cadastro
  • https://meu-app.lovable.app/painel
  • https://meu-app.lovable.app/conta
  • https://meu-app.lovable.app/checkout
  • https://meu-app.lovable.app/precos
  • https://meu-app.lovable.app/sobre
  • https://meu-app.lovable.app/contato
  • https://meu-app.lovable.app/blog
  • https://meu-app.lovable.app/blog/post-1
  • https://meu-app.lovable.app/blog/post-2
  • https://meu-app.lovable.app/termos
  • https://meu-app.lovable.app/privacidade
  • https://meu-app.lovable.app/faq
  • https://meu-app.lovable.app/recuperar-senha
  • https://meu-app.lovable.app/status
  • https://meu-app.lovable.app/api/health
  • https://meu-app.lovable.app/sitemap.xml
  • https://meu-app.lovable.app/robots.txt
  • https://api.meu-app.lovable.app/
  • https://staging.meu-app.lovable.app/
  • https://meu-app.lovable.app/assets/index.js
  • https://meu-app.lovable.app/assets/vendor.js
Verificaciones por categoría
  • Secretos expuestos320
  • Cabeceras HTTP170
  • Archivos sensibles120
  • Almacenamiento en el navegador90
  • Base de datos70
  • DNS / correo60
  • Bibliotecas de frontend50
  • api40
  • Cookies40
  • CORS (orígenes cruzados)20
  • Transporte / TLS18
  • Resiliencia (CDN/WAF)12

Informe completo · US$ 49

Ya sabes qué está roto. Falta saber dónde.

El informe completo abre la prueba de cada uno de los 14 hallazgos: el archivo y la línea exactos, el código antes y después, el

  • ✓ Dónde está cada falla — archivo, línea, endpoint
  • ✓ Prompt de corrección por asistente + código antes/después
  • ✓ Cómo verificar que la corrección funcionó
  • ✓ Reprueba incluida: la segunda pasada no cuesta nada
  • ✓ Informe exportable, para archivar o entregar a tu cliente
Ver el informe desbloqueado (ejemplo)US$ 49 · pago único por escaneo · sin suscripción · reprueba incluida

Garantía: si el informe pago no confirma ningún hallazgo alto o crítico, devolvemos los US$ 49.

Plan de acción

En este orden, y no en otro.

0100

nota después de todo · ~6 h 45

la nota tiene techo; la porción de riesgo no

  1. 1Resolver hoy — es lo que abre la puerta

    ~4 h 10−93% del riesgo
    • Archivo .env expuesto20 min
    • Secreto expuesto: Stripe30 min
    • Clave service_role de Supabase expuesta35 min
    • Base Firebase abierta45 min
    • Cookie de sesión sin HttpOnly15 min
    • Secreto expuesto: OpenAI25 min
    • Bucket de archivos público40 min
    • Dato personal en el navegador40 min
  2. 2Esta semana — cierra las rendijas

    ~1 h 45−5% del riesgo
    • DMARC ausente15 min
    • Introspección de GraphQL abierta20 min
    • Librería con falla conocida30 min
    • Content-Security-Policy ausente40 min
  3. 3Cuando puedas — higiene y reputación

    ~50 min−1% del riesgo
    • Scripts sin verificación de integridad20 min
    • Subdominios olvidados30 min

Estimaciones de orden de magnitud, para un dev que conoce el proyecto. La porción de riesgo y la proyección de la nota usan la misma tabla de peso del escaneo — así que el número aquí es lo que la reprueba mostrará.

Alcance de este análisis

Lo que se miró — y, con la misma claridad, lo que no.

Entró

  • Las páginas públicas que el navegador alcanzó desde la dirección indicada
  • Todo archivo que el sitio entrega al navegador — bundles, scripts, configuración
  • Cabeceras de respuesta, cookies de sesión, política de CORS y la configuración de TLS
  • Los registros DNS de correo del dominio (SPF y DMARC)
  • Bibliotecas de frontend con falla pública conocida
  • Archivos sensibles en rutas conocidas (.env, .git, copias de seguridad)

Quedó fuera

  • Todo lo que solo existe después del login — no autenticamos en tu sitio
  • El código que corre en el servidor: inyección de SQL, lógica de negocio, permisos entre usuarios
  • Dependencias del servidor — desde afuera solo vemos lo que el navegador descarga
  • Infraestructura fuera del sitio: puertos de base de datos, buckets, paneles en otros subdominios
  • Lo que publiques después de este escaneo — la superficie cambia con cada deploy
  • La prueba activa de la base de datos, que exige verificación del dominio

Ningún escaneo vuelve seguro un sistema — este cierra las puertas que están abiertas para quien llega de afuera, sin contraseña y sin conocimiento técnico, que es por donde ocurre la mayoría de los incidentes en apps nuevas. La superficie cambia con cada publicación: un escaneo es una foto, no un seguro.

Conformidad (indicativo)

Qué normas tocan estos hallazgos

Los hallazgos de este informe mapean controles de los siguientes frameworks:

PCI-DSS 4.02.26.26.36.3.36.46.4.16.4.37.18.6
ISO/IEC 27001A.5.14A.5.17A.8.24A.8.26A.8.28A.8.3A.8.5A.8.8A.8.9
SOC 2CC6.1CC6.6CC7.1
NIST 800-53AC-3CM-6IA-5RA-5SC-23SC-28SI-10SI-2SI-8
LGPD / GDPRDato personal al alcance de terceros

Mapeo indicativo para orientar la corrección — no es una evaluación ni certificación de conformidad, y no sustituye una auditoría.

Clave service_role de Supabase expuesta

La clave maestra de tu base está en el código que cualquier visitante descarga. Con ella, un extraño lee, edita y borra todo — ignorando cualquier regla de acceso que pusiste.

Datos sensibles (como el token de login) están guardados en el navegador de una forma que otro script puede leer — y robar el acceso.

OWASP A07:2021CWE-522LGPD art. 46~35 min
Crítico
storage.service-key· 1 ubicaciónConfirmado
Corrección bloqueada

Secreto expuesto: Stripe

La clave secreta de Stripe quedó en el sitio. Permite emitir reembolsos, sacar tu lista de clientes y tocar tu cuenta de pagos — todo a tu nombre.

Una contraseña o clave de acceso quedó visible en el código del sitio. Quien abra la página la encuentra — y puede usar tu cuenta, gastar en tu nombre o leer tus datos.

OWASP A07:2021CWE-798LGPD art. 46~30 min
Crítico
secrets.stripe-secret-key· 1 ubicaciónConfirmado
Corrección bloqueada

Archivo .env expuesto

El archivo .env está abierto al público. Ahí están todas tus contraseñas y claves a la vez — el mapa del tesoro servido en bandeja.

Un archivo que debería ser privado (configuración, copia de seguridad) está abierto en internet. Es como dejar la llave debajo del tapete, a la vista de todos.

OWASP A05:2021CWE-538LGPD art. 46~20 min
Crítico
files.env-exposed· 1 ubicaciónConfirmado
Corrección bloqueada

Base Firebase abierta

Tu base Firebase responde sin login. Cualquiera lee los datos de tus usuarios y, si la escritura también está abierta, los edita — sin contraseña, sin barrera.

La base de datos puede accederse directo, sin las reglas de permiso. En la práctica, cualquiera puede leer (o cambiar) los datos de todos los usuarios.

OWASP A01:2021CWE-285LGPD art. 46~45 min
Crítico
database.firebase-open· 1 ubicaciónConfirmado
Corrección bloqueada

Cookie de sesión sin HttpOnly

La cookie que mantiene al usuario logueado puede leerla un script de la página. Con eso basta para que un atacante entre como si fuera él.

La cookie que mantiene al usuario logueado no tiene protección. Eso facilita robar la sesión y entrar al sistema como si fuera él.

OWASP A05:2021CWE-1004LGPD art. 46~15 min
Alto
cookies.session-not-httponly· 1 ubicaciónConfirmado
Corrección bloqueada

Dato personal en el navegador

Los datos personales de tus clientes — tarjeta, identificación — quedan en el navegador, al alcance de cualquier script. Es una fuga y una multa de privacidad esperando pasar.

Datos sensibles (como el token de login) están guardados en el navegador de una forma que otro script puede leer — y robar el acceso.

OWASP A05:2021CWE-359LGPD art. 46~40 min
Alto
storage.pii-in-web-storage· 1 ubicaciónConfirmado
Corrección bloqueada

Bucket de archivos público

Un bucket de archivos (S3/Storage) es listable. Documentos, subidas y respaldos que deberían ser privados se pueden listar y descargar uno a uno.

Un archivo que debería ser privado (configuración, copia de seguridad) está abierto en internet. Es como dejar la llave debajo del tapete, a la vista de todos.

OWASP A01:2021CWE-732LGPD art. 46~40 min
Alto
files.public-bucket· 1 ubicaciónConfirmado
Corrección bloqueada

Secreto expuesto: OpenAI

Tu clave de OpenAI se filtró en el sitio. El consumo es de quien la encuentre; la factura, a fin de mes, es tuya.

Una contraseña o clave de acceso quedó visible en el código del sitio. Quien abra la página la encuentra — y puede usar tu cuenta, gastar en tu nombre o leer tus datos.

OWASP A07:2021CWE-798~25 min
Alto
secrets.openai-key· 1 ubicaciónConfirmado
Corrección bloqueada

Content-Security-Policy ausente

Sin CSP, un script inyectado corre suelto en tu página — robando datos y sesiones de tus usuarios sin aviso.

Faltan protecciones básicas que el navegador usa para frenar ataques. Sin ellas, es más fácil inyectar código malicioso o "secuestrar" la pantalla del usuario.

OWASP A05:2021CWE-693~40 min
Medio
headers.csp-missing· 1 ubicaciónConfirmado
Corrección bloqueada

Introspección de GraphQL abierta

El mapa completo de tu API — todos los campos y operaciones — está público. Le entrega el plano listo a quien quiera atacar, antes de intentarlo.

Un endpoint del sitio está abierto o aceptando acciones peligrosas. Puede usarse para extraer datos o abusar del sistema.

OWASP A05:2021CWE-200~20 min
Medio
api.graphql-introspection· 1 ubicaciónConfirmado
Corrección bloqueada

Librería con falla conocida

Tu sitio carga una librería con una falla pública ya corregida. Es una puerta vieja sin llave — los bots saben exactamente cómo entrar.

Una biblioteca que usa el sitio tiene una falla pública conocida. Es una puerta que los atacantes ya saben buscar.

OWASP A06:2021CWE-1395~30 min
Medio
dependencies.known-vulnerable· 1 ubicaciónProbable
Corrección bloqueada

DMARC ausente

Sin DMARC, cualquiera envía correo haciéndose pasar por tu dominio. Quien cae en el engaño es tu cliente, y la confianza perdida es tuya.

Al correo de tu dominio le faltan sus cerrojos. Sin ellos, los estafadores pueden enviar correo "en nombre" de tu empresa (phishing) — y tus clientes caen en la trampa.

OWASP A05:2021CWE-290~15 min
Medio
dns.dmarc-missing· 1 ubicaciónProbable
Corrección bloqueada

Subdominios olvidados

Encontramos subdominios que dejaste en línea (api., staging.). Cada uno es una puerta más — y los olvidados suelen ser los más frágiles.

Al correo de tu dominio le faltan sus cerrojos. Sin ellos, los estafadores pueden enviar correo "en nombre" de tu empresa (phishing) — y tus clientes caen en la trampa.

OWASP A05:2021CWE-200~30 min
Bajo
dns.subdomains-discovered· 1 ubicaciónConfirmado
Corrección bloqueada

Scripts sin verificación de integridad

Scripts de terceros cargan sin comprobación de integridad. Si el proveedor se ve comprometido, el código malicioso entra directo a tu sitio.

Una biblioteca que usa el sitio tiene una falla pública conocida. Es una puerta que los atacantes ya saben buscar.

OWASP A08:2021CWE-353~20 min
Bajo
dependencies.subresource-integrity-missing· 1 ubicaciónConfirmado
Corrección bloqueada

Las clasificaciones OWASP y CWE son referencias técnicas públicas. El sello de LGPD/GDPR es indicativo — señala hallazgos que pueden dejar datos personales al alcance de terceros y no sustituye una evaluación jurídica.

Informe de ejemplo — Scanfull