~/VibeHandbook
PDF gratis

Capítulo 18 · 07

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
  • .env está 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.

¿Lo quieres sin conexión?

Descarga el libro entero en PDF o EPUB — gratis.