IA Aplicada, Vibe Coding y Negocios Digitales

Migraciones, respaldos y evitar el SQL injection

Entender qué son las migraciones y los respaldos, y por qué el SQL injection ocurre al concatenar datos del usuario: usar consultas parametrizadas.

Cambiar la base sin romperla

18.03.06 Migraciones Premios .PTA.GC.073 (40611533922).jpg
Imagen libre de Wikimedia Commons (CC BY-SA 2.0, autor: Junta de Andalucía)

Tu producto va a crecer y vas a necesitar agregar un campo, quitar una columna o crear una tabla. Hacerlo a mano, tabla por tabla, es un camino seguro a perder datos. Una migración es un archivo que describe el cambio de estructura de forma ordenada y reversible, como el historial de versiones de un documento. En lugar de 'ya quedó', dices 'aplico la migración 0003 agrega el campo teléfono' y todos los entornos quedan iguales: tu máquina, el servidor y el de tu socio.

Antes de migrar, respaldo Una migración cambia estructura. La costumbre profesional es respaldar antes de aplicar cambios delicados, para poder regresar si algo sale mal. Respaldo y migración son pareja.

Respaldo: tu seguro contra el desastre

Un respaldo (backup) es una copia de tus datos guardada aparte. No es opcional: los discos fallan, alguien borra por error, una migración se complica. Reglas mínimas: respaldo automático (no depende de tu memoria), guardado fuera de la misma máquina, y con una prueba de restauración de vez en cuando, porque un respaldo que no se puede restaurar no es respaldo.

Clasifica cada práctica de cuidado de datos.

Buena práctica
Riesgosa

SQL injection: cuando el usuario escribe tu consulta

Imagina un formulario de inicio de sesión. Si tu código arma la consulta pegando lo que escribió el usuario, alguien puede escribir en el campo de usuario algo como: ' OR 1=1 -- y tu consulta, que debía buscar a un usuario, de pronto devuelve todos los registros y lo deja entrar sin contraseña. Eso es SQL injection: datos del usuario que se ejecutan como si fueran código.

En la versión segura, el texto del usuario nunca forma parte de la consulta: se envía como dato, no como instrucción.
Vulnerable (concatena)Seguro (parametriza)
"SELECT * FROM usuarios WHERE nombre = '" . $usuarioSELECT * FROM usuarios WHERE nombre = ? (y el valor va aparte)

¿Cuál es la defensa correcta contra el SQL injection al buscar a un usuario por lo que escribió en un formulario?

Si usé una consulta parametrizada, ya no necesito respaldos de la base.

Un plan de manejo de base de datos tiene una decisión peligrosa. Marca la línea.

  1. Aplico migraciones versionadas y respaldo antes de cada cambio grande.
  2. Armo las consultas pegando directamente lo que escribe el usuario.
  3. Programo un respaldo automático en otro servidor.

Identifica la linea con error.

Escribe tus tres hábitos para la base de tu producto: ¿con qué frecuencia respaldarás, qué harás antes de una migración y cómo le dirás a la IA que use consultas parametrizadas?

PistaSé concreto: "respaldo diario automático a la nube" en vez de "cada rato".

Operación segura de la base

Se requiere 60% de aciertos para avanzar.

Siguiente paso: Proyecto — diseñas de verdad la base de datos de una app real, juntando todo el curso.