- Install and configure helmet with basic CSP in app.js
- Restrict CORS to ALLOWED_ORIGIN env var (default localhost:5173)
- Add express.json 1mb body size limit to prevent memory exhaustion
- Add parseInt+isNaN validation for all :id route params in bills.js
and financing.js (GET/PUT/DELETE/:id and PATCH financing-payments/:id)
- Extend bills.routes.test.js and financing.routes.test.js with ID
validation tests (non-numeric IDs → HTTP 400)
Nightshift-Task: security-footgun
Nightshift-Ref: https://github.com/marcus/nightshift
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>