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 -yInstalación de Docker y docker-compose
Docker y docker-composeInstalamos Docker con el siguiente comando:
sudo apt install docker.io -yUna vez que la instalación esté completa, verificamos que Docker se haya instalado correctamente ejecutando el siguiente comando:
sudo docker --versionDeberíamos ver algo como:
Docker version 26.1.5+dfsg1, build a72d7cdSi 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 dockerVerificamos que Docker esté funcionando correctamente con:
sudo systemctl status dockerInstalamos 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-composeAsignamos 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
DockerfileDentro 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:
--buildasegura que el contenedor se construya desde elDockerfile.-dejecuta los contenedores en segundo plano.
Accedemos al contenedor
Accedemos a la base de datos
Tabla users
usersTabla posts
postsPoblamos 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