Este proyecto consiste en un servidor HTTP simple desarrollado con FastAPI para la clase de Seguridad de Base de Datos. El servidor permite realizar consultas a una base de datos MySQL y está diseñado para demostrar conceptos de seguridad como la Inyección de SQL y el Principio de Menor Privilegio.
- Python 3.7+
- Una instancia de base de datos MySQL activa (con las tablas
countryycity).
Para instalar las dependencias necesarias, ejecuta el siguiente comando en tu terminal:
pip install fastapi uvicorn sqlalchemy pymysql cryptography python-dotenvCreen un archivo llamado .env en la raíz del proyecto con las credenciales especificadas en la tarea:
DB_USER=usuario
DB_PASSWORD=contraseña
DB_HOST=direccion
DB_NAME=worldPara iniciar el servidor, utiliza uvicorn:
uvicorn server:app --reloadEl servidor estará disponible en http://127.0.0.1:8000.
El servidor expone las siguientes rutas:
- GET
/countries: Obtiene la lista de países utilizando el ORM de SQLAlchemy (Consulta segura). - GET
/cities: Obtiene la lista de ciudades. Este endpoint se utiliza para demostrar el Principio de Menor Privilegio (fallará si el usuario de la DB no tiene permisos de lectura sobre la tablacity). - GET
/buscar?nombre=Nombre: Busca una ciudad por su nombre.⚠️ Advertencia: Este endpoint es vulnerable a SQL Injection de forma intencional para fines educativos, ya que utiliza concatenación directa de strings en la consulta.