The server accepts a price sent by the browser
Steps to reproduce
- Create a cart.
- Add 1 × Cap ($24.00) with an extra field in the request: price = 0.01.
- Read the cart totals.
Reproducibility: Always (10/10)
- Expected
- Subtotal $24.00 (the catalogue price).
- Actual
- Subtotal $0.01, total $0.01.
Evidence
POST /api/carts/{cart}/items {"sku":"CAP","qty":1,"price":0.01}
→ 200 {"subtotal":0.01,"tax":0,"total":0.01}Business impactAnyone who edits the request can buy any product for a cent. Direct revenue loss.
Suggested fixIgnore client-sent prices; always read the unit price from the catalogue on the server.
Caught bySecurity testing →

