Insecure Direct Object Reference (IDOR) occurs when an application exposes a reference to an internal implementation object (database ID, filename) and fails to verify that the user is authorized to access it. Attackers can manipulate these references to access unauthorized data.
The application uses predictable identifiers in URLs or parameters. By changing these values, attackers can access other users' data if no authorization check is performed.
// Viewing your own invoice
GET /invoice?id=1001
// Attack: Change ID to view another user's invoice
GET /invoice?id=1002
// Other examples:
GET /api/users/123/profile -- change user ID
GET /download?file=report_123.pdf -- change filename
POST /transfer {"from": "my_account", "to": "attacker"}
-- modify account reference