El filtro de revisión de seguridad
Aquí está el único hábito que convierte todo lo anterior de una preocupación en un proceso: antes de lanzar, haz que la IA ataque su propio código. El modelo que escribió la función normalmente puede encontrar los agujeros que tiene — solo que no lo hará a menos que se lo pidas. Cámbiale el rol de constructor a adversario:
You wrote this endpoint. Now act as an attacker trying to break it.
List every way a malicious user could:
- read or modify data they shouldn't (authorization holes)
- inject code via input (SQL injection, XSS, command injection)
- abuse missing validation or rate limits
For each, show the exact request that exploits it, then the fix.
Don't reassure me — assume there IS a vulnerability and find it.
Esa última línea importa: si se le deja neutral, la IA tiende a decir "¡se ve seguro!". Cuando se le dice que asuma que existe un fallo, de verdad se pone a buscarlo. Combina el pase adversarial con una breve lista de comprobación previa al lanzamiento que ejecutes sobre cualquier cosa de cara al usuario:
- Todo verifica la autorización, no solo que el usuario haya iniciado
- Todas las consultas a la están parametrizadas — nada de construido por cadenas de texto
- La entrada del usuario que se renderiza en la página está escapada (sin inyección de HTML crudo)
- No hay secretos en el código del cliente, y ninguno subido al repositorio
-
.envestá en el gitignore; cualquier clave filtrada ha sido rotada - Las subidas de archivos validan tipo y tamaño y usan nombres generados
- Las nuevas dependencias fueron revisadas por su existencia real y su reputación
Imagina el filtro como una secuencia por la que nada se lanza sin pasar. La IA cambia de sombrero, de constructora a atacante, y luego los escaneos automatizados respaldan lo que un repaso humano pueda pasar por alto:
feature code
│
▼
┌──────────────────┐ "assume there IS a bug, find it"
│ ADVERSARIAL PASS │ authz holes · injection · validation
│ (AI as attacker) │
└────────┬─────────┘
│ issues found? ── yes ──▶ fix ──┐
│ no │
▼ │
┌──────────────────┐ ◀─────────────────── ┘
│ AUTOMATED GATES │ secret scan (gitleaks) · npm audit
│ (CI, every push) │ parameterized? · secrets out of client?
└────────┬─────────┘
│ all green
▼
SHIP ✓ ── anything red blocks the push ──
Y ejecuta un escáner de secretos antes de hacer push — una herramienta como gitleaks (o el escaneo integrado de tu plataforma) rastrea tu código y tu historial buscando cosas con forma de clave. Es una red de seguridad de un solo comando para el error más caro de la lista, y puedes hacer que la IA lo integre en la (Continuous Integration, Integración Continua — el robot que ejecuta automáticamente tus comprobaciones cada vez que subes código) para que se ejecute en cada push.