GuardianUnivalle-Benito-Yucra 0.1.37__tar.gz → 0.1.38__tar.gz

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.

Potentially problematic release.


This version of GuardianUnivalle-Benito-Yucra might be problematic. Click here for more details.

Files changed (25) hide show
  1. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra/detectores/detector_dos.py +26 -7
  2. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra.egg-info/PKG-INFO +1 -1
  3. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/PKG-INFO +1 -1
  4. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/pyproject.toml +1 -1
  5. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra/__init__.py +0 -0
  6. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra/auditoria/registro_auditoria.py +0 -0
  7. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra/criptografia/cifrado_aead.py +0 -0
  8. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra/criptografia/intercambio_claves.py +0 -0
  9. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra/criptografia/kdf.py +0 -0
  10. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra/detectores/detector_csrf.py +0 -0
  11. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra/detectores/detector_keylogger.py +0 -0
  12. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra/detectores/detector_sql.py +0 -0
  13. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra/detectores/detector_xss.py +0 -0
  14. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra/middleware_web/middleware_web.py +0 -0
  15. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra/mitigacion/limitador_peticion.py +0 -0
  16. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra/mitigacion/lista_bloqueo.py +0 -0
  17. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra/puntuacion/puntuacion_amenaza.py +0 -0
  18. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra/utilidades.py +0 -0
  19. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra.egg-info/SOURCES.txt +0 -0
  20. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra.egg-info/dependency_links.txt +0 -0
  21. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra.egg-info/requires.txt +0 -0
  22. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/GuardianUnivalle_Benito_Yucra.egg-info/top_level.txt +0 -0
  23. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/LICENSE +0 -0
  24. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/README.md +0 -0
  25. {guardianunivalle_benito_yucra-0.1.37 → guardianunivalle_benito_yucra-0.1.38}/setup.cfg +0 -0
@@ -18,7 +18,6 @@ if not logger.handlers:
18
18
  handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s"))
19
19
  logger.addHandler(handler)
20
20
 
21
-
22
21
  # =====================================================
23
22
  # === PARÁMETROS DE CONFIGURACIÓN BASE ===
24
23
  # =====================================================
@@ -26,12 +25,10 @@ LIMITE_PETICIONES = getattr(settings, "DOS_LIMITE_PETICIONES", 100) # por minut
26
25
  VENTANA_SEGUNDOS = getattr(settings, "DOS_VENTANA_SEGUNDOS", 60)
27
26
  PESO_DOS = getattr(settings, "DOS_PESO", 0.6)
28
27
 
29
-
30
28
  # =====================================================
31
29
  # === REGISTRO TEMPORAL DE SOLICITUDES POR IP ===
32
30
  # =====================================================
33
- # En producción se recomienda usar Redis o Memcached
34
- # para este tipo de conteo, aquí usamos una memoria temporal.
31
+ # En producción se recomienda Redis o Memcached
35
32
  REGISTRO_SOLICITUDES: Dict[str, List[float]] = {}
36
33
 
37
34
 
@@ -69,13 +66,14 @@ def calcular_nivel_amenaza_dos(
69
66
  def detectar_dos(ip: str, tasa_peticion: int, limite: int = LIMITE_PETICIONES) -> bool:
70
67
  """Evalúa si la tasa de peticiones excede el umbral permitido."""
71
68
  if tasa_peticion > limite:
69
+ # Registrar evento en auditoría
72
70
  registrar_evento(
73
71
  tipo="DoS",
74
72
  descripcion=f"Alta tasa de peticiones desde {ip}: {tasa_peticion} req/min (límite {limite})",
75
73
  severidad="ALTA",
76
74
  )
77
-
78
- limitar_peticion() # Acción de mitigación
75
+ # Mitigación: pasar un usuario genérico
76
+ limitar_peticion(usuario_id="anonimo")
79
77
  return True
80
78
  return False
81
79
 
@@ -88,7 +86,7 @@ class DOSDefenseMiddleware(MiddlewareMixin):
88
86
  Middleware para detección y registro de ataques DoS.
89
87
  - Captura IP, agente y cabeceras sospechosas.
90
88
  - Evalúa la frecuencia de peticiones por IP.
91
- - Marca request.sql_attack_info con información del intento.
89
+ - Marca request.dos_attack_info con información del intento.
92
90
  """
93
91
 
94
92
  def process_request(self, request):
@@ -136,6 +134,27 @@ class DOSDefenseMiddleware(MiddlewareMixin):
136
134
  return None
137
135
 
138
136
 
137
+ """
138
+ Detector de ataques de tipo DoS (Denial of Service)
139
+ ====================================================
140
+
141
+ Este módulo forma parte del sistema de detección de amenazas.
142
+ Detecta tasas de petición anómalas en base a límites configurables,
143
+ captura datos del atacante (IP, agente, cabeceras)
144
+ y registra los incidentes para su auditoría.
145
+
146
+ Componentes:
147
+ - DOSDefenseMiddleware: Middleware principal de detección.
148
+ - detectar_dos(): Evalúa si la tasa supera el umbral permitido.
149
+ - calcular_nivel_amenaza_dos(): Calcula la severidad proporcional.
150
+ - registrar_evento(): Registra los incidentes en auditoría.
151
+
152
+ Algoritmos relacionados:
153
+ * Rate Limiting basado en ventana deslizante.
154
+ * Cálculo de score: S_dos = w_dos * (tasa_peticion / limite)
155
+ """
156
+
157
+
139
158
  """
140
159
  Algoritmos relacionados:
141
160
  *Rate Limiting, listas de bloqueo.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GuardianUnivalle-Benito-Yucra
3
- Version: 0.1.37
3
+ Version: 0.1.38
4
4
  Summary: Middleware y detectores de seguridad (SQLi, XSS, CSRF, DoS, Keylogger) para Django/Flask
5
5
  Author-email: Andres Benito Calle Yucra <benitoandrescalle035@gmail.com>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GuardianUnivalle-Benito-Yucra
3
- Version: 0.1.37
3
+ Version: 0.1.38
4
4
  Summary: Middleware y detectores de seguridad (SQLi, XSS, CSRF, DoS, Keylogger) para Django/Flask
5
5
  Author-email: Andres Benito Calle Yucra <benitoandrescalle035@gmail.com>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "GuardianUnivalle-Benito-Yucra" # usar mayúsculas consistente
7
- version = "0.1.37"
7
+ version = "0.1.38"
8
8
  description = "Middleware y detectores de seguridad (SQLi, XSS, CSRF, DoS, Keylogger) para Django/Flask"
9
9
  authors = [
10
10
  { name = "Andres Benito Calle Yucra", email = "benitoandrescalle035@gmail.com" }