Business Logic Abuse
BeginnerThe checkout endpoint trusts the cart JSON the browser sends — quantity, unit price, and a list of coupon codes — and recomputes the total from them with no lower bound. Tamper the cart to flip the total negative, then turn on server-side validation to see it recomputed honestly.
Progress:
1
Go negative on quantity2
Stack coupons past zero3
Recompute on the server⚡ Cart
POST /api/checkout — body.quantity, body.unitPrice, body.coupons
Quantity
Unit price ($)
Coupons (stackable)
🛡 Server Protection
Server response log
Waiting for checkout…