Proteger una app hecha con IA: lo mínimo indispensable
Cinco protecciones antes de publicar tu app hecha con IA: secretos fuera del código, validación, rate limiting, rutas privadas y auditoría con la propia IA.
Armaste una app con IA, funciona en tu compu y querés subirla a internet. Antes de hacerlo, hay una lista corta de protecciones que no son opcionales: la IA escribe código que funciona, no código que aguanta usuarios malintencionados. En este tutorial cerramos los cinco agujeros más comunes, sin necesidad de ser dev.
Antes de empezar
Necesitás:
- Una app que ya corre en tu máquina (Node, Python o similar), hecha con Claude, ChatGPT, Cursor o la herramienta que uses.
- Saber abrir la terminal y correr un comando.
- El asistente de IA con el que construiste la app, abierto: va a ser tu auditor.
- Una advertencia honesta: si tu app guarda datos de usuarios o mueve plata, esto es el piso, no el techo.
Paso 1 — Sacá los secretos del código
Un secreto es cualquier dato que da acceso a algo: API keys, contraseñas de base de datos, tokens. Si están escritos dentro del código, cualquiera que vea el código los tiene.
Buscá en tu proyecto textos como sk-, key, password o token. Todo lo que aparezca va a un archivo .env (un archivo de texto plano donde viven las variables privadas):
OPENAI_API_KEY=tu-clave-aca
DB_PASSWORD=tu-password-acaY en el código se leen así (ejemplo en Node):
const apiKey = process.env.OPENAI_API_KEY;Después asegurate de que .env esté listado en tu .gitignore, para que nunca viaje a GitHub. Lo importante es que los secretos salgan del código hoy.
Paso 2 — No confíes en nada de lo que entra
Todo formulario, campo de búsqueda o parámetro de URL es una puerta. Si tu app mete lo que escribe el usuario directo en una base de datos o en un comando, alguien puede escribir algo malicioso y romperte todo (eso se llama inyección).
No hace falta dominar la teoría: pedile a tu IA esto, literal:
Revisá todos los lugares donde mi app recibe datos del usuario
(formularios, URLs, APIs) y agregá validación en el servidor:
tipo de dato, largo máximo y sanitización antes de tocar la base.Y verificalo a mano: mandá textos larguísimos, símbolos raros y campos vacíos. La app tiene que responder con un error controlado, no caerse.
Paso 3 — Poné un límite de uso (rate limiting)
Si tu app llama a una API paga (como un modelo de IA), un solo visitante con un script puede hacerte mil pedidos por minuto y vaciarte el crédito. El rate limiting limita cuántos pedidos acepta tu servidor por usuario en cierto tiempo.
En Node con Express se resuelve con un paquete:
import rateLimit from "express-rate-limit";
app.use(rateLimit({
windowMs: 15 * 60 * 1000, // ventana de 15 minutos
max: 100 // máximo 100 pedidos por IP
}));Si usás otro stack, pedile a tu IA "agregá rate limiting a todos los endpoints" y listo. Complementalo con un límite de gasto en el panel del proveedor de la API: doble red de seguridad.
Paso 4 — Protegé lo que no es público
Preguntate: ¿qué rutas de mi app puede tocar cualquiera? Paneles de administración, endpoints que borran datos, rutas de configuración: todo eso necesita autenticación (que el servidor verifique quién sos antes de dejarte pasar).
El error clásico de las apps hechas con IA: el botón de admin está escondido en la interfaz, pero la ruta /admin responde igual si escribís la URL a mano. Esconder no es proteger; los bots escanean rutas comunes todo el día. Probalo: abrí una ventana de incógnito y entrá a las URLs sensibles de tu app. Si abren sin pedirte nada, tenés un problema.
Paso 5 — Hacé que la IA ataque su propio código
Antes de publicar, abrí una conversación nueva (sin el contexto de "todo está bien") y corré esta auditoría:
Actuá como atacante. Revisá este proyecto y decime las 5 formas
más fáciles de: robar secretos, gastar mi crédito de API,
acceder a datos de otros usuarios o tirar el servidor.
Para cada una, dame el arreglo concreto.Vas a encontrar cosas. Siempre se encuentra algo. Arreglá lo que salga y repetí la auditoría hasta que lo que aparezca sea menor.
Errores comunes
- Confiar en que "la IA ya lo hizo seguro". No lo hizo: genera lo que le pediste, y vos no le pediste seguridad. Hay que pedirla explícitamente.
- Validar solo en el frontend. Lo que valida el navegador se salta con herramientas básicas; cualquiera puede hablarle directo a tu API. La validación que cuenta vive en el servidor.
- Confiar en que "nadie va a encontrar mi app". Los ataques son automáticos, no personales: los bots prueban todo lo que tenga una URL, en horas. Aplicá los pasos aunque tengas cero usuarios.
- Arreglar una vez y no volver a mirar. Cada feature nueva que le pedís a la IA puede abrir un agujero nuevo. Repetí el Paso 5 antes de cada publicación.
Siguiente paso
Con esto tu app deja de ser un blanco fácil. Lo que sigue: profundizar en el manejo de secretos (dónde guardarlos, cómo rotarlos), configurar HTTPS en tu dominio —gratis en casi cualquier hosting— y sumar autenticación con un servicio ya hecho en vez de programarla vos. Y si tu app mueve plata en serio, pagale a alguien que sepa para que la revise: sale más barato que el incidente.
¿Lo querés funcionando en tu negocio?
Mirá cómo trabajamos, o entrá gratis a la comunidad y preguntá lo que te trabó.
Seguí aprendiendo
API keys y secretos: el ABC para no regalarle plata a nadie
Guardá tus API keys sin regalarle plata a nadie: .env, .gitignore, techo de gasto y qué hacer si la clave se filtra. Nivel cero, sin haber programado nunca.