Resumen y práctica
Ideas clave
- El código generado por IA es inseguro por defecto; asume que existe una vulnerabilidad y ponte a buscarla en lugar de confiar en una primera impresión limpia.
- Las grandes categorías se repiten: inyección, secretos expuestos, autorización ausente, subidas de archivos inseguras y dependencias inventadas.
- La autorización es por petición, no por iniciada — cada debe verificar que este usuario puede hacer esta acción, no solo que ha iniciado sesión.
- Ejecuta un escáner de secretos como
gitleaksantes de cada push, y rota cualquier clave que alguna vez se haya filtrado; integra el escaneo en la para que no puedas saltártelo. - El día noventa es más peligroso que el día uno — haz que el filtro de seguridad sea lo bastante barato como para no saltártelo y lo bastante automático como para que no puedas.
Pruébalo
Toma cualquier función tuya que toque autenticación, datos de usuario o subidas y ejecútale el de revisión adversarial de abajo. Por cada vulnerabilidad que la IA reporte, pide la petición exacta que la explota y la solución mínima, luego aplica la solución y vuelve a ejecutar el prompt. Termina ejecutando gitleaks (o el escaneo de secretos de tu plataforma) sobre el repositorio y su historial.
Prompt del capítulo
Here is the code for a feature that handles [auth / user data / uploads]:
[paste the code].
Act as an attacker reviewing this for security holes. Specifically check:
- broken authorization (can a user act on another user's data?)
- injection via input (SQL injection, XSS, command injection)
- exposed secrets or keys in code or responses
- unsafe file handling (type, size, path, generated names)
- missing validation or rate limits
For EACH issue, show the exact request that exploits it, then the fix.
Do NOT reassure me — assume there IS a vulnerability and find it.