Descarga inmediata tras la compraPDF sin DRM: léelo en cualquier dispositivoGarantía de Calidad y Atención 24/7Pago cifrado y 100% seguroEbooks gratis para probar antes de comprarDescarga inmediata tras la compraPDF sin DRM: léelo en cualquier dispositivoGarantía de Calidad y Atención 24/7Pago cifrado y 100% seguroEbooks gratis para probar antes de comprar

Clase principal

Domina SQL desde cero antes de que hackeen tus bases de datos

  • 3 min de lectura
  • Gratis
Vídeo de esta pieza: en producción. Mientras tanto, todo el contenido está aquí en texto.
Para empezar

Si no entiendes cómo una aplicación habla con su base de datos, jamás vas a poder protegerla... ni encontrar sus fallos.

Dato clave

El corazón de cualquier app

Prácticamente cualquier aplicación web moderna, desde una red social hasta el sistema de un banco, depende de una base de datos para funcionar. Si la base cae, el servicio muere. Si la base es vulnerable, toda la empresa queda expuesta al completo.

Concepto

¿Qué es una Base de Datos?

Una base de datos es un sistema estructurado diseñado para almacenar, organizar y permitir la recuperación rápida de grandes volúmenes de información de forma electrónica. En ciberseguridad, es el objetivo principal de la mayoría de ataques dirigidos a robar información confidencial.

Concepto

Modelo Relacional (RDBMS)

Los Sistemas de Gestión de Bases de Datos Relacionales organizan la información en tablas formadas por filas (registros) y columnas (campos). Estas tablas se relacionan entre sí mediante claves, creando una red lógica de datos perfectamente estructurada.

Paso a paso

Anatomía de una tabla SQL

Para entender cómo se estructuran los datos, debemos descomponer una tabla relacional en sus elementos fundamentales y entender qué papel juega cada uno dentro del sistema.

Marca cada paso al entenderlo · 0/4

Concepto

¿Qué es SQL?

SQL o Structured Query Language es el lenguaje estándar utilizado para comunicarse con las bases de datos relacionales. Permite realizar consultas, insertar registros, actualizar información y modificar la estructura de los datos con comandos muy precisos.

Practica

Conectando al motor SQL

El primer paso para interactuar con una base de datos desde la línea de comandos en un entorno de laboratorio es autenticarnos contra el servidor gestor utilizando credenciales válidas.

terminal
$ mysql -u root -p
Enter password: ****
Welcome to the MySQL monitor.  Commands end with ;
Server version: 8.0.32-0ubuntu0.22.04.2
Practica

Listando las bases de datos

Una vez dentro del gestor, el comando SHOW DATabases nos muestra todas las bases de datos disponibles en el servidor, permitiéndonos identificar cuál es nuestro objetivo de estudio.

terminal
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
Practica

Seleccionando la base de datos

Para operar dentro de una base de datos específica y consultar sus tablas internas, debemos seleccionarla explícitamente utilizando la sentencia USE.

terminal
mysql> USE bitcrack_shop;
Reading table information for completion of table and column names
Database changed
Practica

Consultando tablas

El comando SHOW TABLES nos revela qué estructuras de datos aloja la base de datos seleccionada, ayudándonos a encontrar tablas críticas como usuarios, contraseñas o pedidos.

terminal
mysql> SHOW TABLES;
+-------------------------+
| Tables_in_bitcrack_shop |
+-------------------------+
| products                |
| users                   |
Practica

La sentencia SELECT básica

La operación más común y potente en SQL es SELECT. Nos permite extraer información de una o varias columnas especificadas dentro de una tabla concreta.

terminal
mysql> SELECT username, email FROM users;
+----------+-------------------+
| username | email             |
+----------+-------------------+
| admin    | [email protected] |
| alice    | [email protected]    |
Practica

Filtrando con la cláusula WHERE

Rara vez queremos ver toda la tabla. La cláusula WHERE nos permite aplicar condiciones estrictas para recuperar únicamente los registros que coincidan con nuestros criterios de búsqueda.

terminal
mysql> SELECT * FROM users WHERE id = 1;
+----+----------+------------------+----------+
| id | username | email            | role     |
+----+----------+------------------+----------+
| id | admin    | admin@bitcrack   | superuser|
+----+----------+------------------+----------+
Practica

Modificando registros con UPDATE

El lenguaje SQL también permite alterar los datos existentes. La sentencia UPDATE modifica los valores de los campos que cumplan con la condición establecida en el filtro.

terminal
mysql> UPDATE users SET role='admin' WHERE username='alice';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
Concepto

Inyección SQL (SQLi) a vista de pájaro

Una inyección SQL ocurre cuando una aplicación web toma entradas de usuario sin validar y las concatena directamente dentro de una consulta SQL, permitiendo al atacante manipular la lógica interna de la base de datos.

Cuidado

El peligro de la concatenación

Nunca confíes en el input del usuario. Construir consultas SQL mediante concatenación directa de cadenas de texto es el error de desarrollo más clásico y peligroso que abre la puerta a la extracción masiva de datos.

Paso a paso

Cómo prevenir ataques SQL

Para blindar una aplicación frente a manipulaciones maliciosas de bases de datos, los desarrolladores deben aplicar estrictas medidas de defensa en profundidad.

    Repaso rápido

    ¿Te acuerdas? Toca para comprobarlo

    Atajos: ← → para cambiar de pieza · / para buscar