Skip to content

Commit 11fb7de

Browse files
authored
Merge pull request #1 from SPotes22/owasp_version
PreBUILD en render para demo deploy
2 parents 34e9fc0 + 0256fe6 commit 11fb7de

23 files changed

Lines changed: 1703 additions & 62 deletions

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,8 @@ review/
1717
node_modules/
1818
node_modules
1919
package.json
20+
.secret
21+
secret
22+
secrets
23+
secrets/
2024

Procfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
web: gunicorn -k eventlet -w 1 servidor:application
1+
web: gunicorn -k eventlet -w 1 app:application
22

33

44

README.md

Lines changed: 120 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ python server.py
4444
El sistema quedará disponible en:
4545

4646
```
47-
http://127.0.0.1:8000
47+
http://127.0.0.1:8080
4848
```
4949
y accesible en red local:
5050

5151
```
52-
http://<TU_IP_LOCAL>:8000
52+
http://<TU_IP_LOCAL>:8080
5353
```
5454
🔑 Roles y Accesos
5555

@@ -118,3 +118,121 @@ Panel de administración para gestión de usuarios.
118118
Dockerización para despliegue rápido.
119119

120120
💡 PiChat es un paso hacia un NAS + sistema de chat privado, simple y seguro para redes locales.
121+
122+
Version OWASP:
123+
para mitigar fallos de arquitectura se opto por una solucion hibrida de modularidad. rutas no criticas en app.py
124+
125+
resumen:
126+
🎯 ¿POR QUÉ ESTO SÍ FUNCIONA?
127+
✅ No hay importaciones circulares - Las rutas están en app.py
128+
129+
✅ Limiter se inicializa UNA vez al principio
130+
131+
✅ Usamos los módulos que SÍ funcionan (seguridad, sanitización)
132+
133+
✅ Mantenemos la lógica compleja modularizada
134+
135+
✅ Las rutas simples quedan en app.py
136+
Detalles de implementacion:
137+
## 🔒 CUMPLIMIENTO OWASP TOP 10 2021
138+
139+
### ✅ Protecciones Implementadas Según Estándares OWASP
140+
141+
#### **A01:2021 - Broken Access Control**
142+
- ✅ Control de roles y permisos (admin, cliente, usuario)
143+
- ✅ Protección de rutas con `@login_required`
144+
- ✅ Validación de ownership en descargas/eliminaciones
145+
- ✅ Rate limiting por tipo de usuario
146+
147+
#### **A02:2021 - Cryptographic Failures**
148+
- ✅ Hashing con **Argon2** (industry standard)
149+
- ✅ Contraseñas nunca en texto plano
150+
- ✅ Claves secretas desde variables de entorno
151+
- ✅ Cookies seguras con flags `HttpOnly`, `Secure`, `SameSite`
152+
153+
#### **A03:2021 - Injection**
154+
- ✅ Sanitización centralizada de inputs
155+
- ✅ Prepared statements para logs (CSV seguro)
156+
- ✅ Validación de tipos y longitud
157+
- ✅ Escape de caracteres especiales en mensajes
158+
159+
#### **A05:2021 - Security Misconfiguration**
160+
- ✅ Configuración segura por defecto
161+
- ✅ Headers CORS restrictivos
162+
- ✅ Logging de auditoría comprehensivo
163+
- ✅ Entornos separados (dev/prod)
164+
165+
#### **A06:2021 - Vulnerable and Outdated Components**
166+
- ✅ Dependencias actualizadas y auditadas
167+
- ✅ Monitoreo de vulnerabilidades conocido
168+
- ✅ Stack tecnológico moderno y mantenido
169+
170+
#### **A07:2021 - Identification and Authentication Failures**
171+
- ✅ Protección contra fuerza bruta (máx 5 intentos, bloqueo 15min)
172+
- ✅ Mecanismos de autenticación seguros
173+
- ✅ Gestión segura de sesiones
174+
- ✅ Logout completo y seguro
175+
176+
### 🛡️ **Características de Seguridad Adicionales**
177+
178+
#### **Protección Contra DoS**
179+
180+
```python
181+
# Rate limiting por IP y usuario
182+
limiter = Limiter(default_limits=["200 per day", "50 per hour"])
183+
@limiter.limit("5 per minute") # Subida archivos
184+
@limiter.limit("10 per minute") # Descargas
185+
@limiter.limit("3 per minute") # Eliminación
186+
```
187+
188+
## Seguridad en Tiempo Real (WebSockets)
189+
✅ Autenticación SocketIO con middleware
190+
191+
✅ Rate limiting por conexión WebSocket
192+
193+
✅ Sanitización de mensajes en tiempo real
194+
195+
✅ Validación de salas con Argon2
196+
197+
## Auditoría y Logging
198+
199+
```
200+
python
201+
# Logger concurrente con buffer
202+
logger = AdvancedLogger(
203+
logs_dir='./logs',
204+
max_file_size_mb=10,
205+
buffer_size=100 # Optimizado para alta carga
206+
)
207+
```
208+
209+
## Protección de Archivos
210+
✅ Sanitización de nombres con secure_filename()
211+
212+
✅ Cuarentena de archivos subidos
213+
214+
✅ Validación de tipos MIME implícita
215+
216+
✅ Límite de tamaño (16MB por archivo)
217+
218+
219+
📊 Métricas de Seguridad
220+
221+
Categoría Nivel de Protección Implementación
222+
Autenticación 🔒🔒🔒🔒🔒 Argon2 + Fuerza Bruta
223+
Autorización 🔒🔒🔒🔒🔒 RBAC + Middleware
224+
Validación Input 🔒🔒🔒🔒○ Sanitización centralizada
225+
Protección DoS 🔒🔒🔒🔒○ Rate Limiting multi-nivel
226+
Auditoría 🔒🔒🔒🔒🔒 Logger con buffer y rotación
227+
## 🚀 Hardening Adicional
228+
229+
```
230+
bash
231+
# Variables de entorno críticas
232+
SECRET_KEY=tu_clave_super_secreta_aqui
233+
ADMIN_PASS=contraseña_compleja_admin
234+
ALLOWED_ORIGINS=https://tudominio.com
235+
DEBUG=False # En producción
236+
```
237+
238+

0 commit comments

Comments
 (0)