GuardianUnivalle-Benito-Yucra 1.1.18__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- GuardianUnivalle_Benito_Yucra/__init__.py +25 -0
- GuardianUnivalle_Benito_Yucra/auditoria/registro_auditoria.py +40 -0
- GuardianUnivalle_Benito_Yucra/criptografia/cifrado_aead.py +25 -0
- GuardianUnivalle_Benito_Yucra/criptografia/intercambio_claves.py +23 -0
- GuardianUnivalle_Benito_Yucra/criptografia/kdf.py +23 -0
- GuardianUnivalle_Benito_Yucra/detectores/detector_csrf.py +488 -0
- GuardianUnivalle_Benito_Yucra/detectores/detector_dos.py +352 -0
- GuardianUnivalle_Benito_Yucra/detectores/detector_sql.py +641 -0
- GuardianUnivalle_Benito_Yucra/detectores/detector_xss.py +626 -0
- GuardianUnivalle_Benito_Yucra/middleware_web/middleware_web.py +13 -0
- GuardianUnivalle_Benito_Yucra/mitigacion/limitador_peticion.py +7 -0
- GuardianUnivalle_Benito_Yucra/mitigacion/lista_bloqueo.py +10 -0
- GuardianUnivalle_Benito_Yucra/puntuacion/puntuacion_amenaza.py +15 -0
- GuardianUnivalle_Benito_Yucra/utilidades.py +7 -0
- guardianunivalle_benito_yucra-1.1.18.dist-info/METADATA +279 -0
- guardianunivalle_benito_yucra-1.1.18.dist-info/RECORD +19 -0
- guardianunivalle_benito_yucra-1.1.18.dist-info/WHEEL +5 -0
- guardianunivalle_benito_yucra-1.1.18.dist-info/licenses/LICENSE +1 -0
- guardianunivalle_benito_yucra-1.1.18.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: GuardianUnivalle-Benito-Yucra
|
|
3
|
+
Version: 1.1.18
|
|
4
|
+
Summary: Middleware y detectores de seguridad (SQLi, XSS, CSRF, DoS) para Django/Flask
|
|
5
|
+
Author-email: Andres Benito Calle Yucra <benitoandrescalle035@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://pypi.org/project/guardianunivalle-benito-yucra/
|
|
8
|
+
Project-URL: Bug_Tracker, https://github.com/Andyyupy/guardianunivalle-benito-yucra/issues
|
|
9
|
+
Keywords: security,django,flask,sqli,xss,csrf,middleware
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Topic :: Security
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Framework :: Django
|
|
16
|
+
Classifier: Framework :: Flask
|
|
17
|
+
Requires-Python: >=3.8
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Requires-Dist: redis>=4.0
|
|
21
|
+
Requires-Dist: django>=3.2
|
|
22
|
+
Dynamic: license-file
|
|
23
|
+
|
|
24
|
+
<!-- Información de la librería -->
|
|
25
|
+
<table align="center" style="width: 100%; text-align: center; border-collapse: collapse; background-color: #f4f4f9; border-radius: 15px; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); padding: 20px;">
|
|
26
|
+
<tr>
|
|
27
|
+
<td style="border: none; padding: 10px 20px;">
|
|
28
|
+
<img src="https://res.cloudinary.com/dsbgmboh1/image/upload/v1761866594/Andres_Benito_Calle_Yucra_nxyqee.png"
|
|
29
|
+
alt="Univalle Logo" width="300"
|
|
30
|
+
style="transition: transform 0.3s ease-in-out;"
|
|
31
|
+
onmouseover="this.style.transform='scale(1.1)'"
|
|
32
|
+
onmouseout="this.style.transform='scale(1)'">
|
|
33
|
+
</td>
|
|
34
|
+
<td style="border: none; padding: 10px 20px; text-align: center;">
|
|
35
|
+
<h1 style="font-size: 50px; margin: 0; color: #c62828; font-family: 'Arial', sans-serif; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);">
|
|
36
|
+
Guardian Univalle Benito Yucra
|
|
37
|
+
</h1>
|
|
38
|
+
<p style="margin: 5px 0 0 0; font-size: 18px; color: #444; font-family: 'Segoe UI', sans-serif;">
|
|
39
|
+
Framework de detección y defensa de amenazas web para Django.
|
|
40
|
+
</p>
|
|
41
|
+
</td>
|
|
42
|
+
<td style="border: none; padding: 10px 20px;">
|
|
43
|
+
<img src="https://res.cloudinary.com/dsbgmboh1/image/upload/v1761864884/GuardianUnivalle_imeegq.png"
|
|
44
|
+
alt="Django Logo" width="300"
|
|
45
|
+
style="transition: transform 0.3s ease-in-out;"
|
|
46
|
+
onmouseover="this.style.transform='scale(1.1)'"
|
|
47
|
+
onmouseout="this.style.transform='scale(1)'">
|
|
48
|
+
</td>
|
|
49
|
+
</tr>
|
|
50
|
+
</table>
|
|
51
|
+
|
|
52
|
+
`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**.
|
|
53
|
+
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.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Arquitectura general
|
|
58
|
+
|
|
59
|
+
Guardian Univalle está diseñado bajo una **arquitectura modular y extensible**, donde cada tipo de amenaza se gestiona mediante un middleware especializado.
|
|
60
|
+
Cada middleware:
|
|
61
|
+
|
|
62
|
+
- Se ejecuta en la fase inicial del request (`process_request`).
|
|
63
|
+
- Analiza cabeceras, cuerpo y metadatos de la petición.
|
|
64
|
+
- Evalúa indicadores de ataque según patrones heurísticos y reglas configurables.
|
|
65
|
+
- Calcula una puntuación de riesgo (score) para cada evento.
|
|
66
|
+
- 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.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Módulos de defensa incluidos
|
|
71
|
+
|
|
72
|
+
### 1. CSRFDefenseMiddleware
|
|
73
|
+
|
|
74
|
+
**Defensa contra Cross-Site Request Forgery (CSRF)**
|
|
75
|
+
|
|
76
|
+
Este módulo detecta intentos de falsificación de peticiones mediante:
|
|
77
|
+
|
|
78
|
+
- Verificación de cabeceras **Origin** y **Referer** contra el host real.
|
|
79
|
+
- Validación de **tokens CSRF** en cookies, cabeceras o formularios.
|
|
80
|
+
- Análisis del **tipo de contenido** (`Content-Type`) y parámetros sensibles.
|
|
81
|
+
- Detección de peticiones JSON o formularios enviados desde dominios externos.
|
|
82
|
+
- Asignación de un **score de riesgo** proporcional al número y severidad de señales encontradas.
|
|
83
|
+
|
|
84
|
+
**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`.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
### 2. XSSDefenseMiddleware
|
|
89
|
+
|
|
90
|
+
**Defensa contra Cross-Site Scripting (XSS)**
|
|
91
|
+
|
|
92
|
+
Analiza los datos enviados en el cuerpo y querystring, detectando vectores de inyección HTML/JS mediante:
|
|
93
|
+
|
|
94
|
+
- Patrones de alto riesgo (`<script>`, `javascript:`, `onload=`, `eval()`).
|
|
95
|
+
- Ofuscaciones con entidades (`<`, `%3Cscript`).
|
|
96
|
+
- Detección de atributos de eventos (`onmouseover`, `onfocus`, etc.).
|
|
97
|
+
- Análisis de URIs maliciosas (`data:text/html`, `vbscript:`).
|
|
98
|
+
- Scoring ponderado por severidad (de 0.3 a 0.95).
|
|
99
|
+
|
|
100
|
+
**Algoritmos utilizados:** expresiones regulares avanzadas con pesos heurísticos y uso opcional de la librería **Bleach** para sanitización comparativa.
|
|
101
|
+
|
|
102
|
+
**Salida:** agrega `request.xss_attack_info` con los detalles de detección, IP de origen, descripción, payload y score total.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
### 3. SQLIDefenseMiddleware
|
|
107
|
+
|
|
108
|
+
**Defensa contra Inyección SQL (SQLi)**
|
|
109
|
+
|
|
110
|
+
Identifica intentos de inyección SQL en parámetros enviados a través de:
|
|
111
|
+
|
|
112
|
+
- Palabras clave peligrosas (`UNION`, `SELECT`, `DROP`, `INSERT`, `UPDATE`).
|
|
113
|
+
- Uso de comentarios (`--`, `#`, `/* ... */`).
|
|
114
|
+
- Concatenaciones o subconsultas sospechosas.
|
|
115
|
+
- Comportamientos anómalos en parámetros GET, POST o JSON.
|
|
116
|
+
|
|
117
|
+
**Algoritmos utilizados:** heurísticas sintácticas + patrones combinados con contextos.
|
|
118
|
+
Evalúa combinaciones de operadores y palabras reservadas para minimizar falsos positivos.
|
|
119
|
+
|
|
120
|
+
**Resultado:** registra el intento en `request.sql_injection_info` con score calculado y parámetros comprometidos.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
### 4. DOSDefenseMiddleware
|
|
125
|
+
|
|
126
|
+
**Detección de ataques de Denegación de Servicio (DoS)**
|
|
127
|
+
|
|
128
|
+
Monitorea la frecuencia de peticiones por IP y calcula una métrica adaptativa:
|
|
129
|
+
|
|
130
|
+
- Detecta exceso de solicitudes en intervalos cortos.
|
|
131
|
+
- Analiza `User-Agent`, patrones repetitivos y tamaño de payloads.
|
|
132
|
+
- Aplica límites configurables (`MAX_REQUESTS_PER_WINDOW`).
|
|
133
|
+
- Marca IPs sospechosas para registro y bloqueo temporal.
|
|
134
|
+
|
|
135
|
+
**Algoritmos utilizados:** Sliding Window con conteo adaptativo, controlado por señales de frecuencia e intensidad.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### 5. ScrapingDefenseMiddleware (opcional)
|
|
140
|
+
|
|
141
|
+
**Detección de scraping y bots automatizados**
|
|
142
|
+
|
|
143
|
+
Evalúa características típicas de scraping:
|
|
144
|
+
|
|
145
|
+
- User-Agent anómalo o ausente.
|
|
146
|
+
- Patrón de navegación repetitivo o excesivamente rápido.
|
|
147
|
+
- Ausencia de cabeceras humanas como `Accept-Language` o `Referer`.
|
|
148
|
+
- Combinación con heurísticas de DoS para detectar scrapers agresivos.
|
|
149
|
+
|
|
150
|
+
**Algoritmos utilizados:** análisis estadístico de cabeceras + patrones de comportamiento a corto plazo.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Integración y uso
|
|
155
|
+
|
|
156
|
+
### Instalación
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
pip install guardian-univalle
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Configuración en settings.py
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
MIDDLEWARE = [
|
|
166
|
+
# Middlewares personalizados
|
|
167
|
+
"GuardianUnivalle_Benito_Yucra.detectores.detector_dos.DOSDefenseMiddleware",
|
|
168
|
+
"GuardianUnivalle_Benito_Yucra.detectores.detector_sql.SQLIDefenseMiddleware",
|
|
169
|
+
"GuardianUnivalle_Benito_Yucra.detectores.detector_xss.XSSDefenseMiddleware",
|
|
170
|
+
"GuardianUnivalle_Benito_Yucra.detectores.detector_csrf.CSRFDefenseMiddleware",
|
|
171
|
+
"users.middleware.AuditoriaMiddleware",
|
|
172
|
+
"users.auditoria_servidor.AuditoriaServidorMiddleware",
|
|
173
|
+
]
|
|
174
|
+
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
ALLOWED_HOSTS = [
|
|
179
|
+
"192.168.0.3",
|
|
180
|
+
"127.0.0.1",
|
|
181
|
+
"localhost",
|
|
182
|
+
]
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Parámetros de defensa avanzada
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# --- DoS Defense ---
|
|
190
|
+
DOS_LIMITE_PETICIONES = 120
|
|
191
|
+
DOS_VENTANA_SEGUNDOS = 60
|
|
192
|
+
DOS_PESO = 0.6
|
|
193
|
+
DOS_LIMITE_ENDPOINTS = 80
|
|
194
|
+
DOS_TIEMPO_BLOQUEO = 300
|
|
195
|
+
DOS_TRUSTED_IPS = ["127.0.0.1", "192.168.0.3"]
|
|
196
|
+
|
|
197
|
+
# Score total de bloqueo
|
|
198
|
+
DOS_PESO_BLACKLIST = 0.3
|
|
199
|
+
DOS_PESO_HEURISTICA = 0.1
|
|
200
|
+
DOS_UMBRAL_BLOQUEO = 0.8
|
|
201
|
+
|
|
202
|
+
# Configuración general
|
|
203
|
+
DOS_DEFENSE_MAX_REQUESTS = 100
|
|
204
|
+
DOS_DEFENSE_BLOCK_TIME = 300
|
|
205
|
+
DOS_DEFENSE_TRUSTED_IPS = ["127.0.0.1", "192.168.0.3"]
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# --- SQL Injection Defense ---
|
|
211
|
+
SQLI_DEFENSE_TRUSTED_IPS = ["127.0.0.1", "192.168.0.3"]
|
|
212
|
+
|
|
213
|
+
# --- XSS Defense ---
|
|
214
|
+
XSS_DEFENSE_TRUSTED_IPS = ["127.0.0.1", "192.168.0.3"]
|
|
215
|
+
XSS_DEFENSE_SANITIZE_INPUT = False
|
|
216
|
+
XSS_DEFENSE_BLOCK = True
|
|
217
|
+
XSS_DEFENSE_EXCLUDED_PATHS = ["/health", "/internal"]
|
|
218
|
+
|
|
219
|
+
# --- CSRF Defense ---
|
|
220
|
+
CSRF_DEFENSE_TRUSTED_IPS = ["127.0.0.1", "192.168.0.3"]
|
|
221
|
+
CSRF_DEFENSE_BLOCK = True
|
|
222
|
+
CSRF_DEFENSE_LOG = True
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Auditoría y correlación de eventos
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
request.xss_attack_info = {
|
|
230
|
+
"ip": "192.168.1.10",
|
|
231
|
+
"tipos": ["XSS"],
|
|
232
|
+
"descripcion": ["Etiqueta <script> detectada"],
|
|
233
|
+
"payload": {"field": "comentario", "snippet": "<script>alert(1)</script>"},
|
|
234
|
+
"score": 0.92,
|
|
235
|
+
"url": "/comentarios/enviar/",
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Filosofía del proyecto
|
|
241
|
+
|
|
242
|
+
Guardian Univalle – Benito & Junkrat busca proporcionar una capa de defensa proactiva para entornos Django universitarios y empresariales, combinando:
|
|
243
|
+
|
|
244
|
+
#Detección heurística.
|
|
245
|
+
|
|
246
|
+
#Análisis semántico de cabeceras y payloads.
|
|
247
|
+
|
|
248
|
+
#Escalamiento de score basado en señales múltiples.
|
|
249
|
+
|
|
250
|
+
## Su diseño es didáctico y extensible, ideal tanto para proyectos reales como para enseñanza de ciberseguridad aplicada.
|
|
251
|
+
|
|
252
|
+
### Estructura del paquete
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
guardian_univalle/
|
|
256
|
+
│
|
|
257
|
+
├── detectores/
|
|
258
|
+
│ ├── csrf_defense.py
|
|
259
|
+
│ ├── xss_defense.py
|
|
260
|
+
│ ├── sql_defense.py
|
|
261
|
+
│ ├── dos_defense.py
|
|
262
|
+
│ ├── scraping_defense.py
|
|
263
|
+
│
|
|
264
|
+
├── auditoria/
|
|
265
|
+
│ └── auditoria_middleware.py
|
|
266
|
+
│
|
|
267
|
+
└── __init__.py
|
|
268
|
+
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Licencia
|
|
272
|
+
|
|
273
|
+
Este proyecto se distribuye bajo la licencia MIT, permitiendo libre uso y modificación con atribución.
|
|
274
|
+
|
|
275
|
+
📘 Universidad Privada del Valle – Sede La Paz
|
|
276
|
+
|
|
277
|
+
👨💻 Desarrollado por: Benito Yucra
|
|
278
|
+
|
|
279
|
+
📅 Año: 2025
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
GuardianUnivalle_Benito_Yucra/__init__.py,sha256=lbIRb8fCFYfAdyJV6NsYVZJ5pKYSJZKhhK-En9g_1M8,762
|
|
2
|
+
GuardianUnivalle_Benito_Yucra/utilidades.py,sha256=lFNVnlyTSYmQ1CqtmHx6aefK5uNw0wsMdHRQyxAIZy0,120
|
|
3
|
+
GuardianUnivalle_Benito_Yucra/auditoria/registro_auditoria.py,sha256=NnKBOeRWkXVGaMBeQRYU528rWlaBDBPmTAzfji9n8fw,1135
|
|
4
|
+
GuardianUnivalle_Benito_Yucra/criptografia/cifrado_aead.py,sha256=wfoRpaKvOqPbollNQsDNUNWClYJlXYTKTYvv0qcR6aI,962
|
|
5
|
+
GuardianUnivalle_Benito_Yucra/criptografia/intercambio_claves.py,sha256=9djnlzb022hUhrDbQyWz7lWLbkn_vQZ4K7qar1FXYmo,829
|
|
6
|
+
GuardianUnivalle_Benito_Yucra/criptografia/kdf.py,sha256=_sbepEY1qHEKga0ExrX2WRg1HeCPY5MC5CfXZWYyl-A,709
|
|
7
|
+
GuardianUnivalle_Benito_Yucra/detectores/detector_csrf.py,sha256=ox5HShSbkyv3kVe96dDtNeP-edlXhB_G4FExOlG9KrQ,20747
|
|
8
|
+
GuardianUnivalle_Benito_Yucra/detectores/detector_dos.py,sha256=Jy4fhI-6n9wQR0quzpondcUyCA2447lDq4fmOFeM1jA,14989
|
|
9
|
+
GuardianUnivalle_Benito_Yucra/detectores/detector_sql.py,sha256=Cuhny6EXsyEwIMWdMWGSO-uUmcxGsH6f6vDqWaozETQ,29814
|
|
10
|
+
GuardianUnivalle_Benito_Yucra/detectores/detector_xss.py,sha256=zZXbymY2OjBwV1iQbHSP9ErVE9vzY4-_bKBGM8NuzUI,27494
|
|
11
|
+
GuardianUnivalle_Benito_Yucra/middleware_web/middleware_web.py,sha256=23pLLYqliUoMrIC6ZEwz3hKXeDjWfHSm9vYPWGmDDik,495
|
|
12
|
+
GuardianUnivalle_Benito_Yucra/mitigacion/limitador_peticion.py,sha256=ipMOebYhql-6mSyHs0ddYXOcXq9w8P_IXLlpiIqGncw,246
|
|
13
|
+
GuardianUnivalle_Benito_Yucra/mitigacion/lista_bloqueo.py,sha256=6AYWII4mrmwCLHCvGTyoBxR4Oasr4raSHpFbVjqn7d8,193
|
|
14
|
+
GuardianUnivalle_Benito_Yucra/puntuacion/puntuacion_amenaza.py,sha256=Wx5XfcII4oweLvZsTBEJ7kUc9pMpP5-36RfI5C5KJXo,561
|
|
15
|
+
guardianunivalle_benito_yucra-1.1.18.dist-info/licenses/LICENSE,sha256=5e4IdL542v1E8Ft0A24GZjrxZeTsVK7XrS3mZEUhPtM,37
|
|
16
|
+
guardianunivalle_benito_yucra-1.1.18.dist-info/METADATA,sha256=azGLDH_hF9vp23sJznuQDwQ2iA1ep1jeXDbAkV_S0ZU,9988
|
|
17
|
+
guardianunivalle_benito_yucra-1.1.18.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
18
|
+
guardianunivalle_benito_yucra-1.1.18.dist-info/top_level.txt,sha256=HTWfZM64WAV_QYr5cnXnLuabQt92dvlxqlR3pCwpbDQ,30
|
|
19
|
+
guardianunivalle_benito_yucra-1.1.18.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!-- Licencia (MIT por ejemplo) -->
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
GuardianUnivalle_Benito_Yucra
|