/** * Rate-Limiting-Middleware für sensible Endpoints (Login, Passwort-Reset). * Schützt gegen Brute-Force- und Credential-Stuffing-Angriffe. */ import rateLimit from 'express-rate-limit'; /** * Login: 10 Versuche pro 15 Minuten pro IP. * Nach Überschreitung: 15 Min Sperre für diese IP. */ export const loginRateLimiter = rateLimit({ windowMs: 15 * 60 * 1000, // 15 Minuten limit: 10, // Max. 10 Versuche pro Zeitfenster standardHeaders: 'draft-7', legacyHeaders: false, message: { success: false, error: 'Zu viele Login-Versuche. Bitte in 15 Minuten erneut versuchen.', }, // Erfolgreiche Logins zählen nicht gegen das Limit skipSuccessfulRequests: true, }); /** * Passwort-Reset-Anfrage: 5 Versuche pro Stunde pro IP. * Verhindert Mail-Flut und gezielte Brute-Force über Reset-Links. */ export const passwordResetRateLimiter = rateLimit({ windowMs: 60 * 60 * 1000, // 1 Stunde limit: 5, standardHeaders: 'draft-7', legacyHeaders: false, message: { success: false, error: 'Zu viele Passwort-Reset-Anfragen. Bitte in einer Stunde erneut versuchen.', }, });