Redacted case study. How unparameterised search queries on a live marketplace were found and replaced during a security sprint.
A marketplace platform processing thousands of daily product searches wanted a security review ahead of Series A. Search, filter, and sort endpoints used raw DB::select calls composed from unvalidated request parameters.
A four-day Laravel Security Audit covering database-layer code, route middleware, auth flows, and third-party package versions.
The product search endpoint interpolated sort and category parameters directly into the query string:
Sending category=' OR '1'='1 returned the full product catalogue. The unwhitelisted sort column made stacked read exploitation trivial.
Every raw query replaced with bound parameters or query builder equivalents. The sort column restricted via an allowed-list helper. Retested and passed within the sprint window.