← Lumbre

Desarrollo de Software con IA Gimnasio de desconfianza: encuentra los 12 errores

Portada de Gimnasio de desconfianza: encuentra los 12 errores

Gimnasio de desconfianza: encuentra los 12 errores

✦ El examen final de la confianza crítica no es teoría: es una solución completa generada por IA —funciona, se ve profesional y contiene doce defectos esperando a tu usuario · Desarrollo de Software con IA · 10 minutos que valen la pena

Roadwise Consulting

Contenido modificado tras su publicación

Objetivo: Auditar soluciones generadas por IA y señalar defectos de seguridad, arquitectura y datos.

10 min Desarrollo de Software con IA 15–99 años
Modo PPTX
Más
Gimnasio de desconfianza: encuentra los 12 errores

Herramientas de la lección

Sorpréndeme

Sobre este contenido

Ir a

Volver a Módulo 21 · Cuando NO debes confiar en la IA Cursos Explorar Mi cuenta Salir del modo estudio

Las reglas del gimnasio

Esto no es lectura: es reps. La solución de abajo fue «generada por IA» para una tienda ficticia —registro de clientes, búsqueda, borrado de cuentas— y RESUELVE lo pedido: si la pruebas con clics amables, funciona. Contiene doce defectos de seguridad, datos y arquitectura, todos con nombre y apellido de los que ya estudiaste. Reglas: 1) no mires la respuesta hasta hacer tu pasada, 2) escanea con lista (siete señales + familias + protocolo), 3) anota número y descripción breve de cada hallazgo. Puntuación: 4 o menos, repite el módulo 10; 8 o más, ya eres auditor de tu propio proyecto.

Doce defectos conviviendo en código que «funciona»

javascript
// solution.js — generada por IA para "gestion de clientes de la tienda"\nimport { FancyValidator } from "fancy-form-validator";        // ??? (1)\n\nconst DB_PASS = "supersecreta2024";                             // (2)\nconst API = "http://api.tienda-interna.com";                   // (3)\n\napp.post("/registro", (req, res) => {\n  db.run("INSERT INTO usuarios VALUES ('" + req.body.email + "'," +\n         "," + req.body.pass + ")");                           // (4)\n  res.json({ ok: true });                                       // (5)\n});\n\napp.get("/clientes", (req, res) => {\n  res.setHeader("Access-Control-Allow-Origin", "*");            // (6)\n  const r = db.all("SELECT * FROM clientes");\n  console.log("sirviendo clientes:", r);                        // (7)\n  res.json(r);\n});\n\napp.post("/borrar-cuenta", (req, res) => {\n  if (!req.session) return res.sendStatus(401);\n  db.run("DELETE FROM clientes");                               // (8)\n  try { auditar(req); } catch (e) { }                           // (9)\n  res.json({ borrado: "completo" });\n});\n\napp.get("/buscar", (req, res) => {\n  let pagina = 1;\n  while (true) {                                                 // (10)\n    const r = await api.fetch(API + "/catalogo?page=" + pagina);\n    if (!r.items.length) break;\n    pagina++;\n  }\n});\n\n// "los campos del formulario ya traen required en el HTML"     // (11)\n// nota al final: "no hace falta respaldar: la base es chica"   // (12)
Tómate los dos minutos enteros antes de seguir. Marca los que creas ver —incluidos los que no son líneas sino AUSENCIAS (un chequeo de rol que falta, un respaldo que nadie previó)—.

Respuesta del entrenador: los doce, uno por uno

Las doce son señales que ya conocías puestas en fila. Ninguna requiere saber más tecnología: requiere traer la lista y no confiarse en que «se ve bien».
#DefectoFamilia / señalDaño y corrección
1Paquete fancy-form-validatoralucinación de dependencia (cnf-oa01)no existe en el registro público: buscar antes de instalar, o hacerlo en 30 líneas propias
2Contraseña en el códigoseñal 1 (cnf-oa02)viaja al repo para siempre: variable de entorno
3API interna por httpsecreto en tránsito (M10-HTTPS)credenciales y datos viajan en claro: solo https
4SQL cosido con +señal 2 (cnf-oa02)SQL injection directo: consulta parametrizada
5Guarda la contraseña en claro y sin hashM9-contraseñasfiltración = todas las contraseñas usables de golpe: hash + bcrypt/argon
6CORS estrella en ruta de clientesseñal 6 (cnf-oa02)cualquier sitio llama la API con la sesión del usuario: origen específico
7Log con la lista completa de clientesseñal 7 (cnf-oa02)la bitácora se vuelve la base de datos paralela sin proteger: loggear identificadores, no contenido
8DELETE FROM clientes sin WHEREprotocolo anti-letal 1 (cnf-oa03)borra TODA la tabla, no la cuenta del usuario: WHERE id del usuario autenticado
9catch vacío en la auditoríaseñal 5 (cnf-oa02)el intento de borrado queda sin rastro si auditar falla: loggear el fallo
10while(true) sin tope ni manejo de errordependencia oculta / arquitectura (cnf-oa03 domino)si el API nunca devuelve lista vacía, bucle infinito: tope de páginas y manejo de fallo
11Validación solo en el HTMLseñal 3 (cnf-oa02)cualquiera POSTea directo al servidor sin el required: validar en el servidor, el cliente es UX
12«No hace falta respaldar»protocolo paso 2 (cnf-oa03)el tamaño no es defensa: basta un borrado masivo o una migración fallida; copia siempre antes de operaciones masivas

Prueba

De los doce defectos, ¿cuál es el que borra la base de datos ENTERA con una sola petición legítima?

El defecto 5 (contraseña en claro) es el menos grave de los doce porque no rompe ninguna función: el registro funciona perfecto.

Tu turno con espejos

Un alumno encontró solo 5 de los 12 y quiere mejorar su escaneo. Señala el enfoque que más le va a rendir:

Marca la línea o las líneas con error y pulsa Comprobar.

Cierra el gimnasio con la transferencia: corre el escaneo de doce puntos contra TU proyecto real (o el ficticio del curso) y anota hallazgo o «limpio con evidencia» por categoría. Luego pídele a la IA la corrección de cada hallazgo citándole el defecto y la corrección de la tabla: «tienes un patrón del defecto 4: SQL cosido; paramétriza».

Doce defectos en una página valen más que doce páginas de teoría del defecto.

Tu texto se guarda sólo en este dispositivo.

Las respuestas y tu progreso se guardan sólo en este dispositivo. Contenido firmado por su autoría mediante Lumbre.
Más sobre esta lección

Comentarios

Inicia sesión para comentar.

Todavía no hay comentarios. Sé la primera persona en opinar.