Middleware y detectores de seguridad (SQLi, XSS, CSRF, DoS) para Django/Flask
Project description
|
|
Guardian Univalle Benito YucraLibrería de seguridad web para Django basada en detección heurística, scoring de riesgo y bloqueo adaptativo. |
|
GuardianUnivalle-Benito-Yucra es una librería de seguridad para aplicaciones web desarrollada en Python, distribuida como paquete a través de PyPI y diseñada para fortalecer aplicaciones Django frente a amenazas comunes como SQL Injection (SQLi), Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF), Denegación de Servicio (DoS) y scraping automatizado.
A diferencia de muchas soluciones tradicionales que únicamente validan o sanitizan datos, Guardian Univalle implementa una arquitectura basada en detección heurística, análisis multicapa, puntuación de riesgo (Threat Score) y bloqueo adaptativo, funcionando como una capa de protección similar a un Mini WAF (Web Application Firewall) integrado directamente dentro de la aplicación.
Cada petición HTTP es analizada en tiempo real antes de llegar a la lógica de negocio. El sistema inspecciona cabeceras, parámetros, cuerpos de solicitudes, metadatos y patrones de comportamiento para identificar actividades sospechosas, registrar eventos de auditoría y aplicar medidas de mitigación automáticas cuando el nivel de riesgo supera los umbrales configurados.
Arquitectura General
Guardian Univalle está construido bajo una arquitectura modular basada en middlewares especializados.
Cada middleware:
- Intercepta solicitudes HTTP durante
process_request. - Analiza cabeceras, cuerpo y metadatos.
- Evalúa señales de riesgo mediante reglas heurísticas.
- Calcula un score de amenaza.
- Registra evidencias del ataque detectado.
- Permite auditoría centralizada.
- Puede bloquear automáticamente solicitudes maliciosas.
El objetivo es proporcionar una defensa proactiva y extensible capaz de adaptarse a distintos entornos académicos, empresariales y gubernamentales.
Características Principales
✅ Detección heurística de amenazas web.
✅ Sistema de puntuación de riesgo (Threat Score).
✅ Bloqueo adaptativo configurable.
✅ Análisis de cabeceras HTTP.
✅ Inspección de payloads GET, POST y JSON.
✅ Registro y auditoría de incidentes.
✅ Arquitectura modular basada en middlewares.
✅ Integración nativa con Django.
✅ Compatibilidad conceptual con Flask y otros frameworks WSGI.
✅ Diseño extensible para investigación y enseñanza de ciberseguridad.
Módulos de Defensa
1. CSRFDefenseMiddleware
Defensa contra Cross-Site Request Forgery (CSRF)
Detecta intentos de falsificación de solicitudes verificando:
- Cabeceras Origin.
- Cabeceras Referer.
- Tokens CSRF.
- Cookies de sesión.
- Formularios HTML.
- Solicitudes JSON.
- Métodos POST, PUT, PATCH y DELETE.
Técnicas utilizadas
- Validación semántica del origen.
- Comparación de dominios confiables.
- Correlación entre cabeceras y cookies.
- Evaluación heurística de inconsistencias.
Resultado
Genera un score de riesgo y registra los detalles del incidente para auditoría o bloqueo automático.
2. XSSDefenseMiddleware
Defensa contra Cross-Site Scripting (XSS)
Analiza parámetros y contenido enviado por el usuario para detectar:
- Etiquetas
<script>. javascript:vbscript:data:text/htmleval()- Eventos HTML peligrosos.
- Payloads ofuscados.
- Codificación hexadecimal o URL Encoding malicioso.
Técnicas utilizadas
- Expresiones regulares avanzadas.
- Heurísticas ponderadas.
- Sanitización comparativa opcional mediante Bleach.
- Scoring adaptativo según severidad.
Resultado
Genera:
request.xss_attack_info
con:
- IP de origen.
- Payload detectado.
- Tipo de ataque.
- Score.
- Evidencias encontradas.
3. SQLIDefenseMiddleware
Defensa contra SQL Injection
Analiza parámetros GET, POST y JSON para identificar:
- UNION SELECT.
- DROP TABLE.
- INSERT.
- UPDATE.
- DELETE.
- Comentarios SQL (
--,#,/* */). - Subconsultas sospechosas.
- Concatenaciones maliciosas.
- Operadores lógicos utilizados para evasión.
Técnicas utilizadas
- Análisis sintáctico.
- Correlación contextual.
- Heurísticas de palabras reservadas.
- Scoring basado en patrones combinados.
Resultado
Genera:
request.sql_injection_info
incluyendo:
- Parámetros afectados.
- Evidencias.
- Nivel de riesgo.
- Score final.
4. DOSDefenseMiddleware
Defensa contra Denegación de Servicio (DoS)
Supervisa continuamente la actividad por dirección IP para detectar:
- Frecuencia excesiva de solicitudes.
- Picos de tráfico.
- Comportamientos repetitivos.
- Accesos automatizados.
- Sobrecarga de endpoints específicos.
Técnicas utilizadas
- Sliding Window.
- Rate Limiting adaptativo.
- Detección de patrones repetitivos.
- Correlación de actividad temporal.
Capacidades
- Bloqueo temporal.
- Lista blanca de IPs confiables.
- Umbrales configurables.
- Registro de incidentes.
5. ScrapingDefenseMiddleware
Defensa contra Scraping Automatizado
Detecta bots y sistemas de extracción masiva mediante:
- User-Agent anómalo.
- Ausencia de cabeceras humanas.
- Navegación excesivamente rápida.
- Accesos secuenciales repetitivos.
- Patrones compatibles con crawlers.
Técnicas utilizadas
- Análisis estadístico.
- Correlación de cabeceras.
- Heurísticas de comportamiento.
- Integración con el detector DoS.
Sistema de Scoring de Amenazas
Uno de los componentes más importantes de Guardian Univalle es su sistema de puntuación de riesgo.
Cada indicador detectado aporta una ponderación específica al score global.
Ejemplo:
| Indicador | Score |
|---|---|
| Script Tag | 0.30 |
| javascript: | 0.40 |
| eval() | 0.50 |
| UNION SELECT | 0.70 |
| Origen CSRF inválido | 0.60 |
| Exceso de peticiones | 0.80 |
El score acumulado permite:
- Clasificar amenazas.
- Reducir falsos positivos.
- Aplicar bloqueos automáticos.
- Priorizar incidentes de seguridad.
Instalación
pip install guardian-univalle
Configuración en Django
MIDDLEWARE = [
"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 = [
"127.0.0.1",
"localhost",
"192.168.0.3",
]
Configuración 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"]
DOS_PESO_BLACKLIST = 0.3
DOS_PESO_HEURISTICA = 0.1
DOS_UMBRAL_BLOQUEO = 0.8
DOS_DEFENSE_MAX_REQUESTS = 100
DOS_DEFENSE_BLOCK_TIME = 300
DOS_DEFENSE_TRUSTED_IPS = ["127.0.0.1", "192.168.0.3"]
# SQL Injection
SQLI_DEFENSE_TRUSTED_IPS = [
"127.0.0.1",
"192.168.0.3"
]
# XSS
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
CSRF_DEFENSE_TRUSTED_IPS = [
"127.0.0.1",
"192.168.0.3"
]
CSRF_DEFENSE_BLOCK = True
CSRF_DEFENSE_LOG = True
Auditoría de Eventos
Ejemplo de incidente registrado:
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/"
}
La auditoría permite:
- Correlación de eventos.
- Análisis forense.
- Métricas de seguridad.
- Reportes institucionales.
- Seguimiento histórico de incidentes.
Filosofía del Proyecto
Guardian Univalle Benito Yucra busca proporcionar una capa adicional de seguridad para aplicaciones web modernas mediante:
- Detección heurística.
- Análisis semántico de cabeceras.
- Inspección profunda de payloads.
- Correlación de múltiples señales.
- Scoring adaptativo.
- Bloqueo automático basado en riesgo.
Su enfoque combina principios de los sistemas IDS, IPS y WAF, pero integrados directamente en la aplicación web.
Estructura del Paquete
GuardianUnivalle_Benito_Yucra/
│
├── detectores/
│ ├── detector_csrf.py
│ ├── detector_xss.py
│ ├── detector_sql.py
│ ├── detector_dos.py
│ ├── detector_scraping.py
│
├── auditoria/
│ └── auditoria_middleware.py
│
├── configuracion/
│
└── __init__.py
Clasificación Técnica
GuardianUnivalle-Benito-Yucra puede clasificarse como:
✅ Paquete Python (Python Package)
✅ Librería de seguridad web
✅ Conjunto de middlewares de seguridad
✅ Sistema de detección heurística de amenazas
✅ Mini WAF integrado a nivel de aplicación
✅ Framework modular de defensa para Django
Licencia
Licencia MIT.
Uso, modificación y distribución permitidos con atribución correspondiente.
📘 Universidad Privada del Valle – Sede La Paz
👨💻 Desarrollado por: Andres Benito Calle Yucra
📅 Año: 2025
🔐 Guardian Univalle Benito Yucra — Seguridad inteligente para aplicaciones web mediante detección heurística, scoring de amenazas y bloqueo adaptativo.
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.44.tar.gz.
File metadata
- Download URL: guardianunivalle_benito_yucra-1.1.44.tar.gz
- Upload date:
- Size: 29.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
562fd16db8fdaff0cbe8a0303d956449b989d98d3585552ab075579e987b49a5
|
|
| MD5 |
8a9b967c9ee771c9228f531ee719d809
|
|
| BLAKE2b-256 |
14627650233490245e554bd5f6bf82e6d7b65a8e11e7275c5f2ef825010a8be1
|
File details
Details for the file guardianunivalle_benito_yucra-1.1.44-py3-none-any.whl.
File metadata
- Download URL: guardianunivalle_benito_yucra-1.1.44-py3-none-any.whl
- Upload date:
- Size: 37.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61960a6ffcc01f7692bcb5a5600c29b08179e8f2b2a5dbc866a95cc5340e8aa2
|
|
| MD5 |
139409e608f6efcc9b308976bdb6b204
|
|
| BLAKE2b-256 |
b78e407da3e6f03b8069b442eb54e8f14a66d44f5f71ebc07823182367fdd1f2
|