Laboratorio

Para poder entender mejoras en que consisten las inyección SQL, lo llevaremos a la practica con un laboratorio de prueba. Para lo cual, utilizaremos un contenedor Docker en el que instalaremos Apache, PHP y MySQL.

Antes de comenzar, es recomendable actualizar el sistema para asegurarse de que todo esté al día. Abrimos una terminal y ejecutamos los siguientes comandos:

sudo apt update && sudo apt upgrade -y

Instalación de Docker y docker-compose

Instalamos Docker con el siguiente comando:

sudo apt install docker.io -y

Una vez que la instalación esté completa, verificamos que Docker se haya instalado correctamente ejecutando el siguiente comando:

sudo docker --version

Deberíamos ver algo como:

Docker version 26.1.5+dfsg1, build a72d7cd

Si queremos asegurarnos de que Docker se inicie automáticamente al arrancar el sistema, habilitamos el servicio de Docker:

sudo systemctl enable docker
sudo systemctl start docker

Verificamos que Docker esté funcionando correctamente con:

sudo systemctl status docker

Instalamos docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r .tag_name)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Asignamos permisos de ejecución al binario.

Verficamos la instalación de docker-compose con el siguiente comando:

Deberíamos ver algo como:

Creación de las carpetas necesarias

Creamos el directorio para el laboratorio.

Archivo Dockerfile

Dentro de este archivo, colocamos lo siguiente:

Archivo docker-compose.yml

Creamos la carpeta app para colocar los archivos de la aplicación.

Ahora, para construir y ejecutar el contenedor, usamos el siguiente comando:

  • --build asegura que el contenedor se construya desde el Dockerfile.

  • -d ejecuta los contenedores en segundo plano.

Accedemos al contenedor

Accedemos a la base de datos

Tabla users

Tabla posts

Poblamos las tablas con algunos datos de prueba.

Es importante aclarar, que para este ejemplo y con fines prácticos guardaremos la contraseña en texto plano.

De esta forma, tenemos listo nuestro laboratorio.

En los siguientes artículos, creamos los scripts php correspondientes para las explicaciones.

Última actualización