Authorize Every Object Access
A developer can correctly require login and still expose another user’s data. The mistake is simple: the application proves who made the request, then assumes that identity is enough to access whichever record the request names. Consider an endpoint that returns an invoice by identifier. A signed-in user requests invoice 1842, the application loads invoice 1842, and the response succeeds. If the application never checks whether that user is allowed to read that invoice, changing the requested identifier may cross an authorization boundary.