fix(security): timeout de conexión en servidor HTTP — VULN: Slowloris DoS
Vulnerabilidad corregida: - Slowloris: un atacante podía abrir cientos de conexiones TCP enviando headers/body a goteo (1 byte cada varios segundos) manteniendo el event loop de Node.js ocupado con sockets colgados indefinidamente, lo que bloquea peticiones legítimas (DoS por agotamiento de sockets). Mitigación aplicada en el servidor HTTP: headersTimeout = 10s — aborta si los headers no llegan en 10 s requestTimeout = 15s — aborta si el body no llega en 15 s keepAliveTimeout = 5s — cierra keep-alive inactivos tras 5 s Adicionalmente: warning al arrancar si SALT no está configurado en .env. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
fa4a38bb9a
commit
f2ff04ecdc
1 changed files with 9 additions and 1 deletions
10
api/app.js
10
api/app.js
|
|
@ -50,9 +50,17 @@ app.get('/api/health', (req, res) => res.json({ status: 'ok' }));
|
|||
|
||||
// ── Arranque ─────────────────────────────────────────────────────
|
||||
const PORT = process.env.PORT || 8787;
|
||||
app.listen(PORT, '127.0.0.1', () => {
|
||||
const server = app.listen(PORT, '127.0.0.1', () => {
|
||||
console.log(`RESETEA backend corriendo en 127.0.0.1:${PORT}`);
|
||||
if (!process.env.GOOGLE_CLIENT_ID) {
|
||||
console.warn('⚠ GOOGLE_CLIENT_ID no configurado — OAuth Gmail deshabilitado');
|
||||
}
|
||||
if (!process.env.SALT) {
|
||||
console.warn('⚠ SALT no configurado en .env — el hash de referencia usa salt por defecto');
|
||||
}
|
||||
});
|
||||
|
||||
// Mitigación Slowloris: timeout en headers y body incompletos
|
||||
server.headersTimeout = 10_000; // 10 s para recibir los headers completos
|
||||
server.requestTimeout = 15_000; // 15 s para recibir el body completo
|
||||
server.keepAliveTimeout = 5_000; // cierra keep-alive inactivos tras 5 s
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue