fix: módulos faltantes wikipedia scraper + docs actualizados

- WIKIPEDIA/main.py: import buscar_articulos y obtener_contenido_wikipedia
- myenv: instalados wikipedia, wikipedia-api, deep-translator
- PIPELINE_MAESTRO.md: tabla de errores conocidos, Nice/CPUQuota, timer 2d
- SEGURIDAD.md: tabla de fixes aplicados en producción

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
CAPITANSITO 2026-04-22 00:33:50 +02:00
parent f04ab5fa74
commit 778db90d78
3 changed files with 47 additions and 5 deletions

View file

@ -164,6 +164,24 @@ app.use(helmet.contentSecurityPolicy({...})); // luego ajusta solo el CSP
---
## Fixes aplicados (2026-04-22)
Todos los ítems críticos y altos han sido corregidos en producción:
| # | Vulnerabilidad | Fix aplicado |
|---|---|---|
| 1 | NoSQL Injection | `sanitizeParam()` + `TEMAS_VALIDOS` whitelist |
| 2 | Puerto 3000 público | `app.listen(port, '127.0.0.1', ...)` |
| 3 | XSS stored innerHTML | `textContent` + DOM API en `output_int_sec.js` y `3dscript_eco-corp.html` |
| 4 | ReDoS palabraClave | Escape de metacaracteres + límite 100 chars |
| 5 | Helmet parcial | `app.use(helmet())` completo + CSP sin `unsafe-inline` |
| 6 | CSRF | Filtro Origin en `/api/` |
| 7 | Body flooding | `bodyParser limit: '10kb'` |
**Pendiente sin fix:** Rate limiting (express-rate-limit no instalado).
---
## Lo que está bien
| Componente | Estado |
@ -171,7 +189,7 @@ app.use(helmet.contentSecurityPolicy({...})); // luego ajusta solo el CSP
| HTTPS con Let's Encrypt | Activo en nginx |
| MongoDB en 127.0.0.1 | No expuesto al exterior |
| Límite de nodos máx. 500 | `Math.min(parseInt(nodos) || 100, 500)` |
| Helmet CSP básico | Activo |
| Helmet completo | Activo desde 2026-04-22 |
| No hay SQL injection | BD es MongoDB, no SQL |
| No directory listing en /wiki-images/ | Express static lo rechaza |
| HTTP → HTTPS redirect | Configurado en nginx |