Middleware y detectores de seguridad (SQLi, XSS, CSRF, DoS) para Django/Flask
Project description
|
|
Guardian Univalle Benito YucraAlgoritmos de detección y defensa de amenazas web para Django. |
|
Guardian Univalle es un sistema de seguridad modular desarrollado para fortalecer aplicaciones Django frente a ataques web comunes como XSS, CSRF, inyección SQL, ataques DoS y scraping automatizado.
Cada módulo opera mediante middlewares independientes que analizan el tráfico HTTP en tiempo real, aplican heurísticas inteligentes y registran eventos sospechosos para auditoría y bloqueo adaptativo.
Arquitectura general
Guardian Univalle está diseñado bajo una arquitectura modular y extensible, donde cada tipo de amenaza se gestiona mediante un middleware especializado.
Cada middleware:
- Se ejecuta en la fase inicial del request (
process_request). - Analiza cabeceras, cuerpo y metadatos de la petición.
- Evalúa indicadores de ataque según patrones heurísticos y reglas configurables.
- Calcula una puntuación de riesgo (score) para cada evento.
- Anexa la información al objeto
request(por ejemplo,request.xss_attack_info) para que otros módulos (como el de auditoría) la procesen.
Módulos de defensa incluidos
1. CSRFDefenseMiddleware
Defensa contra Cross-Site Request Forgery (CSRF)
Este módulo detecta intentos de falsificación de peticiones mediante:
- Verificación de cabeceras Origin y Referer contra el host real.
- Validación de tokens CSRF en cookies, cabeceras o formularios.
- Análisis del tipo de contenido (
Content-Type) y parámetros sensibles. - Detección de peticiones JSON o formularios enviados desde dominios externos.
- Asignación de un score de riesgo proporcional al número y severidad de señales encontradas.
Algoritmos utilizados: heurísticas basadas en cabeceras HTTP, validación semántica de origen y detección de anomalías en métodos POST, PUT, DELETE y PATCH.
2. XSSDefenseMiddleware
Defensa contra Cross-Site Scripting (XSS)
Analiza los datos enviados en el cuerpo y querystring, detectando vectores de inyección HTML/JS mediante:
- Patrones de alto riesgo (
<script>,javascript:,onload=,eval()). - Ofuscaciones con entidades (
<,%3Cscript). - Detección de atributos de eventos (
onmouseover,onfocus, etc.). - Análisis de URIs maliciosas (
data:text/html,vbscript:). - Scoring ponderado por severidad (de 0.3 a 0.95).
Algoritmos utilizados: expresiones regulares avanzadas con pesos heurísticos y uso opcional de la librería Bleach para sanitización comparativa.
Salida: agrega request.xss_attack_info con los detalles de detección, IP de origen, descripción, payload y score total.
3. SQLIDefenseMiddleware
Defensa contra Inyección SQL (SQLi)
Identifica intentos de inyección SQL en parámetros enviados a través de:
- Palabras clave peligrosas (
UNION,SELECT,DROP,INSERT,UPDATE). - Uso de comentarios (
--,#,/* ... */). - Concatenaciones o subconsultas sospechosas.
- Comportamientos anómalos en parámetros GET, POST o JSON.
Algoritmos utilizados: heurísticas sintácticas + patrones combinados con contextos.
Evalúa combinaciones de operadores y palabras reservadas para minimizar falsos positivos.
Resultado: registra el intento en request.sql_injection_info con score calculado y parámetros comprometidos.
4. DOSDefenseMiddleware
Detección de ataques de Denegación de Servicio (DoS)
Monitorea la frecuencia de peticiones por IP y calcula una métrica adaptativa:
- Detecta exceso de solicitudes en intervalos cortos.
- Analiza
User-Agent, patrones repetitivos y tamaño de payloads. - Aplica límites configurables (
MAX_REQUESTS_PER_WINDOW). - Marca IPs sospechosas para registro y bloqueo temporal.
Algoritmos utilizados: Sliding Window con conteo adaptativo, controlado por señales de frecuencia e intensidad.
5. ScrapingDefenseMiddleware (opcional)
Detección de scraping y bots automatizados
Evalúa características típicas de scraping:
- User-Agent anómalo o ausente.
- Patrón de navegación repetitivo o excesivamente rápido.
- Ausencia de cabeceras humanas como
Accept-LanguageoReferer. - Combinación con heurísticas de DoS para detectar scrapers agresivos.
Algoritmos utilizados: análisis estadístico de cabeceras + patrones de comportamiento a corto plazo.
Integración y uso
Instalación
pip install guardian-univalle
Configuración en settings.py
MIDDLEWARE = [
# Middlewares personalizados
"GuardianUnivalle_Benito_Yucra.detectores.detector_dos.DOSDefenseMiddleware",
"GuardianUnivalle_Benito_Yucra.detectores.detector_sql.SQLIDefenseMiddleware",
"GuardianUnivalle_Benito_Yucra.detectores.detector_xss.XSSDefenseMiddleware",
"GuardianUnivalle_Benito_Yucra.detectores.detector_csrf.CSRFDefenseMiddleware",
"users.middleware.AuditoriaMiddleware",
"users.auditoria_servidor.AuditoriaServidorMiddleware",
]
ALLOWED_HOSTS = [
"192.168.0.3",
"127.0.0.1",
"localhost",
]
Parámetros de defensa avanzada
# --- DoS Defense ---
DOS_LIMITE_PETICIONES = 120
DOS_VENTANA_SEGUNDOS = 60
DOS_PESO = 0.6
DOS_LIMITE_ENDPOINTS = 80
DOS_TIEMPO_BLOQUEO = 300
DOS_TRUSTED_IPS = ["127.0.0.1", "192.168.0.3"]
# Score total de bloqueo
DOS_PESO_BLACKLIST = 0.3
DOS_PESO_HEURISTICA = 0.1
DOS_UMBRAL_BLOQUEO = 0.8
# Configuración general
DOS_DEFENSE_MAX_REQUESTS = 100
DOS_DEFENSE_BLOCK_TIME = 300
DOS_DEFENSE_TRUSTED_IPS = ["127.0.0.1", "192.168.0.3"]
# --- SQL Injection Defense ---
SQLI_DEFENSE_TRUSTED_IPS = ["127.0.0.1", "192.168.0.3"]
# --- XSS Defense ---
XSS_DEFENSE_TRUSTED_IPS = ["127.0.0.1", "192.168.0.3"]
XSS_DEFENSE_SANITIZE_INPUT = False
XSS_DEFENSE_BLOCK = True
XSS_DEFENSE_EXCLUDED_PATHS = ["/health", "/internal"]
# --- CSRF Defense ---
CSRF_DEFENSE_TRUSTED_IPS = ["127.0.0.1", "192.168.0.3"]
CSRF_DEFENSE_BLOCK = True
CSRF_DEFENSE_LOG = True
Auditoría y correlación de eventos
request.xss_attack_info = {
"ip": "192.168.1.10",
"tipos": ["XSS"],
"descripcion": ["Etiqueta <script> detectada"],
"payload": {"field": "comentario", "snippet": "<script>alert(1)</script>"},
"score": 0.92,
"url": "/comentarios/enviar/",
}
Filosofía del proyecto
Guardian Univalle – Benito & Junkrat busca proporcionar una capa de defensa proactiva para entornos Django universitarios y empresariales, combinando:
#Detección heurística.
#Análisis semántico de cabeceras y payloads.
#Escalamiento de score basado en señales múltiples.
Su diseño es didáctico y extensible, ideal tanto para proyectos reales como para enseñanza de ciberseguridad aplicada.
Estructura del paquete
guardian_univalle/
│
├── detectores/
│ ├── csrf_defense.py
│ ├── xss_defense.py
│ ├── sql_defense.py
│ ├── dos_defense.py
│ ├── scraping_defense.py
│
├── auditoria/
│ └── auditoria_middleware.py
│
└── __init__.py
Licencia
Este proyecto se distribuye bajo la licencia MIT, permitiendo libre uso y modificación con atribución.
📘 Universidad Privada del Valle – Sede La Paz
👨💻 Desarrollado por: Benito Yucra
📅 Año: 2025
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file guardianunivalle_benito_yucra-1.1.41.tar.gz.
File metadata
- Download URL: guardianunivalle_benito_yucra-1.1.41.tar.gz
- Upload date:
- Size: 45.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3e18dd2024bff9f7fb4eca39dbdde1efbaf9ecd7bfaea9d1369e8862da65c58
|
|
| MD5 |
94ddd534397be113c1c773221af17e8f
|
|
| BLAKE2b-256 |
0ce5d7389030e5fd2ac3361d0a45b2674b420e196e670c947317231abe650bd3
|
File details
Details for the file guardianunivalle_benito_yucra-1.1.41-py3-none-any.whl.
File metadata
- Download URL: guardianunivalle_benito_yucra-1.1.41-py3-none-any.whl
- Upload date:
- Size: 51.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dfc4052b11cf13ed0cf79302f2a007f3be7a67c3c6ce1552ad949b1b3e0daff7
|
|
| MD5 |
6559b6fbddc464edeedc480a987e0ebf
|
|
| BLAKE2b-256 |
eb1cc7f2f527a39b3cfa9a806e1e465e7aa0255db98032d72bf7dbf9af913b9f
|