Security assurance · internal
Hardening our own production intake system
- Secure
- Build
- Operate
Business challenge
An internal RFP intake system had been running in production for months, collecting prospect contact details, company information and generated proposals. It worked. Its access model had never been independently reviewed, and the security posture was assumed from reading the code rather than tested against the running system.
System delivered
A full assessment followed by remediation of every validated finding, then verification of each fix against production. The work covered the session layer, the database access model, the write surface, response caching, the notification pipeline and failure visibility.
Technical scope
- Next.js App Router middleware and route handlers
- PostgreSQL row-level security and role privileges
- HMAC-signed sessions (Web Crypto, edge-compatible)
- Server-only service-role data access
- Transactional email delivery
- Forward-only database migrations
Operational outcome
- Anonymous database privileges revoked; prospect data no longer reachable with the public key
- Cookie-presence authentication replaced with signed, expiring sessions
- API routes brought inside the protection they appeared to sit behind
- Draft writes restricted to an explicit field allowlist
- Repeated submissions no longer produce duplicate notifications
- Document-generation failures surfaced to operators instead of being discarded