Prompts para validar la seguridad de tu app
8 prompts listos para copiar y pegar en tu AI y encontrar los huecos de seguridad más comunes antes de lanzar.
Principiante · 15 min
La AI te ayuda a construir rápido, pero también te ayuda a dejar puertas abiertas rápido. Estos prompts convierten a tu AI (Claude, ChatGPT, Cursor…) en un auditor de seguridad. Úsalos dentro de tu proyecto para que la AI pueda leer tu código.
Cómo usar esta guía
Corre un prompt a la vez. No le pidas a la AI que arregle todo de golpe: primero que te dé la lista de problemas, revísala tú, y luego pídele que arregle uno por uno.
1. Llaves y secretos expuestos
El error número uno que veo en las revisiones: API keys de OpenAI, Stripe o de la base de datos metidas en el frontend. Cualquiera puede abrir el navegador, verlas y usarlas con tu tarjeta.
Revisa todo mi proyecto buscando secretos expuestos: API keys, tokens, contraseñas
o credenciales de base de datos.
Para cada hallazgo dime:
1. Archivo y línea
2. Si ese código se ejecuta en el cliente (navegador/app) o en el servidor
3. Qué tan grave es si alguien lo encuentra
4. Cómo moverlo a una variable de entorno en el servidor
Revisa también si el archivo .env está en .gitignore y si hay variables con prefijo
NEXT_PUBLIC_, VITE_ o EXPO_PUBLIC_ que no deberían ser públicas.
No cambies nada todavía, solo dame el reporte.
2. Reglas de la base de datos
Si usas Supabase o Firebase, tu base de datos está directamente expuesta a internet. Sin reglas, cualquier usuario puede leer o borrar los datos de todos.
Analiza la seguridad de mi base de datos (Supabase RLS / Firebase Security Rules).
1. Lista cada tabla o colección y dime si tiene reglas activadas
2. Para cada una, explica en español simple quién puede leer, crear, editar y borrar
3. Señala cualquier tabla donde un usuario pueda ver o modificar datos de otro usuario
4. Propón las reglas corregidas siguiendo el principio de "mínimo acceso necesario"
Asume que un atacante tiene la anon key pública y puede hacer peticiones directas
a la base de datos sin pasar por mi app.
3. ¿Puede un usuario ver datos de otro?
Se llama IDOR y es súper común: cambias /api/orders/123 por /api/orders/124 y ves el pedido de otra
persona.
Revisa cada endpoint, API route o server action de mi proyecto.
Para cada uno verifica:
- ¿Requiere que el usuario haya iniciado sesión?
- ¿Comprueba que el recurso solicitado PERTENECE al usuario que lo pide?
- ¿Confía en un userId que viene del cliente en vez de sacarlo de la sesión?
Dame una tabla con: ruta, método, requiere login (sí/no), valida dueño (sí/no), riesgo.
Luego explica cómo explotaría un atacante el caso más grave.
4. Validación de lo que envía el usuario
Nunca confíes en lo que llega del formulario. La validación del frontend es para la experiencia de usuario; la del servidor es la que te protege.
Busca todos los lugares donde mi app recibe datos del usuario (formularios, query
params, body de APIs, uploads de archivos).
Para cada uno dime:
1. Si se valida en el servidor (no solo en el frontend)
2. Riesgo de inyección SQL, XSS o inyección de comandos
3. Si los archivos subidos validan tipo y tamaño
Propón validación usando Zod (o la librería que ya use el proyecto) para los casos
de mayor riesgo.
5. Protección contra abuso y costos inesperados
Si tu app llama a una API de AI, un bot puede hacer miles de peticiones y dejarte una factura de cientos de dólares en una noche.
Identifica los endpoints de mi app que son costosos o sensibles: llamadas a APIs
de AI, envío de emails/SMS, login, registro, recuperar contraseña.
Para cada uno dime si tiene rate limiting y cómo se podría abusar de él.
Luego propón una implementación de rate limiting adecuada para mi stack y dónde
poner límites de uso por usuario.
6. Pagos y webhooks
Si usas Stripe, RevenueCat o similar: el acceso premium nunca debe activarse porque el frontend lo diga.
Revisa cómo funciona el flujo de pagos y suscripciones en mi app.
1. ¿Dónde se decide si un usuario tiene acceso premium? ¿Se puede falsificar desde el cliente?
2. ¿Los webhooks verifican la firma del proveedor (ej. Stripe signature)?
3. ¿Qué pasa si el mismo webhook llega dos veces?
4. ¿Qué pasa si un pago se reembolsa o una suscripción se cancela?
Explica cada riesgo con un ejemplo concreto de cómo alguien obtendría premium gratis.
7. Autenticación y sesiones
Audita la autenticación de mi app:
- ¿Las contraseñas se manejan con un proveedor seguro o se guardan de forma segura (bcrypt/argon2)?
- ¿Los tokens/sesiones expiran? ¿Dónde se guardan en el cliente?
- ¿El flujo de "olvidé mi contraseña" revela si un email existe?
- ¿Las rutas protegidas se validan en el servidor o solo se ocultan en el frontend?
- ¿Cerrar sesión invalida realmente la sesión?
Ordena los hallazgos del más grave al menos grave.
8. Revisión final antes de lanzar
Úsalo como checklist cada vez que vayas a publicar una versión nueva.
Actúa como un experto en seguridad haciendo una auditoría antes del lanzamiento
de mi app. Revisa el proyecto completo y dame un reporte con:
1. Un puntaje de seguridad del 1 al 10 y por qué
2. Los 5 problemas más graves, ordenados por riesgo real (no teórico)
3. Dependencias con vulnerabilidades conocidas (sugiere correr npm audit o equivalente)
4. Headers de seguridad faltantes (CSP, HSTS, X-Frame-Options)
5. Errores que muestran información interna al usuario (stack traces, queries)
6. Un plan de acción: qué arreglar hoy, qué esta semana y qué puede esperar
Explícalo para alguien que no es experto en seguridad.
Importante
La AI puede equivocarse o no ver todo. Estos prompts te ayudan a encontrar los problemas más comunes, pero no reemplazan una auditoría profesional si manejas datos sensibles o pagos a gran escala.