GuardianUnivalle-Benito-Yucra 0.1.58__tar.gz → 0.1.60__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.
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra/detectores/detector_dos.py +6 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra/detectores/detector_sql.py +15 -6
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra.egg-info/PKG-INFO +1 -1
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/PKG-INFO +1 -1
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/pyproject.toml +1 -1
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra/__init__.py +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra/auditoria/registro_auditoria.py +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra/criptografia/cifrado_aead.py +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra/criptografia/intercambio_claves.py +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra/criptografia/kdf.py +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra/detectores/detector_csrf.py +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra/detectores/detector_keylogger.py +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra/detectores/detector_xss.py +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra/middleware_web/middleware_web.py +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra/mitigacion/limitador_peticion.py +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra/mitigacion/lista_bloqueo.py +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra/puntuacion/puntuacion_amenaza.py +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra/utilidades.py +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra.egg-info/SOURCES.txt +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra.egg-info/dependency_links.txt +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra.egg-info/requires.txt +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/GuardianUnivalle_Benito_Yucra.egg-info/top_level.txt +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/LICENSE +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/README.md +0 -0
- {guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/setup.cfg +0 -0
|
@@ -128,6 +128,12 @@ UMBRAL_BLOQUEO = getattr(settings, "DOS_UMBRAL_BLOQUEO", 0.8)
|
|
|
128
128
|
# === CARGA INICIAL DE LA LISTA NEGRA ===
|
|
129
129
|
try:
|
|
130
130
|
IP_BLACKLIST: Set[str] = fetch_and_parse_blacklists()
|
|
131
|
+
output_filename = "blacklist_cargada.txt"
|
|
132
|
+
with open(output_filename, 'w') as f:
|
|
133
|
+
# Escribe cada IP/CIDR en una nueva línea
|
|
134
|
+
for ip in sorted(list(IP_BLACKLIST)): # Usamos sorted() para orden alfabético/numérico
|
|
135
|
+
f.write(f"{ip}\n")
|
|
136
|
+
logger.info(f"Lista Negra Externa GUARDADA en {output_filename} para inspección.")
|
|
131
137
|
logger.info(f"Lista Negra Externa cargada con {len(IP_BLACKLIST)} IPs/CIDR.")
|
|
132
138
|
except Exception as e:
|
|
133
139
|
logger.error(f"Error al cargar la IP Blacklist: {e}. Usando lista vacía.")
|
|
@@ -15,15 +15,24 @@ if not logger.handlers:
|
|
|
15
15
|
logger.addHandler(handler)
|
|
16
16
|
|
|
17
17
|
# =====================================================
|
|
18
|
-
# ===
|
|
18
|
+
# === PATRONES DE ATAQUE SQL DEFINIDOS ===
|
|
19
19
|
# =====================================================
|
|
20
20
|
SQL_PATTERNS = [
|
|
21
|
+
# Patrones de Extracción de Datos y Evasión (Alto Peso)
|
|
21
22
|
(re.compile(r"\bunion\b\s+(all\s+)?\bselect\b", re.I), "Uso de UNION SELECT", 0.7),
|
|
22
|
-
(re.compile(r"\bor\b\s+'?\d+'?\s*=\s*'?\d+'?", re.I), "Tautología OR
|
|
23
|
-
(re.compile(r"\
|
|
24
|
-
(re.compile(r"(
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
(re.compile(r"\bor\b\s+['\"]?\d+['\"]?\s*=\s*['\"]?\d+['\"]?", re.I), "Tautología OR X=X", 0.6), # Mejorado
|
|
24
|
+
(re.compile(r"\b(sleep|benchmark|waitfor\s+delay)\b\s*\(", re.I), "Función de Tiempo (SQL Ciega)", 0.8), # Muy peligroso
|
|
25
|
+
(re.compile(r"\b(extractvalue|updatexml|convert)\b\s*\(", re.I), "Extracción Basada en Errores/Funciones", 0.75),
|
|
26
|
+
|
|
27
|
+
# Patrones de Control y Destrucción (Peso Medio)
|
|
28
|
+
(re.compile(r"\b(drop\s+table|truncate\s+table|delete\s+from|insert\s+into|update\s+set)\b", re.I), "Manipulación DML/DDL", 0.5),
|
|
29
|
+
(re.compile(r"\b(exec|execute|xp_cmdshell)\b", re.I), "Ejecución de Comando (OS o Stored Proc)", 0.6),
|
|
30
|
+
(re.compile(r";\s*(select|drop|insert|update)\b", re.I), "Apilamiento de Consultas (Separador ;)", 0.55), # Nuevo
|
|
31
|
+
|
|
32
|
+
# Patrones de Detección e Información (Bajo Peso)
|
|
33
|
+
(re.compile(r"(--|#|/\*|;)", re.I), "Comentario SQL o Separador de Consulta", 0.4),
|
|
34
|
+
(re.compile(r"\b(substring|substr|mid)\b\s*\(", re.I), "Función de Cadena (SQL Ciega Booleana)", 0.45), # Nuevo
|
|
35
|
+
(re.compile(r"\b(select)\b.+\b(from|where)\b", re.I), "Estructura SELECT-FROM-WHERE", 0.4), # Más específico
|
|
27
36
|
]
|
|
28
37
|
|
|
29
38
|
IGNORED_FIELDS = ["password", "csrfmiddlewaretoken", "token", "auth"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: GuardianUnivalle-Benito-Yucra
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.60
|
|
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.
|
|
3
|
+
Version: 0.1.60
|
|
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
|
{guardianunivalle_benito_yucra-0.1.58 → guardianunivalle_benito_yucra-0.1.60}/pyproject.toml
RENAMED
|
@@ -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.
|
|
7
|
+
version = "0.1.60"
|
|
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" }
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|