Changeset c88783e in Klonkt
- Timestamp:
- 06/11/2026 12:08:23 AM (3 months ago)
- Branches:
- main
- Children:
- b5bae24
- Parents:
- 353c39c
- File:
-
- 1 edited
-
src/middleware/rate-limit.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/middleware/rate-limit.js
r353c39c rc88783e 13 13 import rateLimit from 'express-rate-limit'; 14 14 import { renderPage } from './render.js'; 15 16 // Achter Cloudflare/Caddy kan req.ip binnenkomen als "1.2.3.4:11046" (IPv4 met 17 // poort). express-rate-limit v7 valideert het IP en gooit anders 18 // ERR_ERL_INVALID_IP_ADDRESS — onafgevangen async → het proces crasht (en pm2 19 // loopt in een restart-loop). Strip een trailing IPv4-poort, val terug op de 20 // socket, en laat IPv6 (meerdere dubbele punten) ongemoeid. 21 function clientKey(req) { 22 let ip = req.ip || req.socket?.remoteAddress || ''; 23 if (/^\d{1,3}(\.\d{1,3}){3}:\d+$/.test(ip)) ip = ip.split(':')[0]; 24 return ip || 'unknown'; 25 } 15 26 16 27 function blockedHandler(viewName, bodyClass, friendlyMsg) { … … 42 53 standardHeaders: true, 43 54 legacyHeaders: false, 55 keyGenerator: clientKey, 56 validate: { ip: false }, 44 57 // Only count failed attempts. Successful logins don't burn the budget. 45 58 skipSuccessfulRequests: true, … … 52 65 standardHeaders: true, 53 66 legacyHeaders: false, 67 keyGenerator: clientKey, 68 validate: { ip: false }, 54 69 skipSuccessfulRequests: false, // any attempt counts (registration spam is the concern) 55 70 handler: blockedHandler('pages/auth-register', 'on-special', 'Too many signup attempts.'),
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)