Imagine a restaurant where the waiter doesn’t care who you are — you say “I’m table 12,” and he brings you table 12’s biryani, bill, OTP, and maybe even their passport.
Congratulations.
You’ve just experienced the spirit of IDOR.
In API language this becomes BOLA (Broken Object Level Authorization), because cybersecurity loves giving fancy names to simple disasters.
Because developers think:
Brother, it's the *internet*. Of course someone will change the ID.
GET /user/profile?id=123
They assume this is “security.” Meanwhile you:
GET /user/profile?id=124
And boom — access to someone else’s:
Any time you see predictable numbers, your hacker-sense should tingle:
/order?id=120
/user?id=88
/api/v1/user/202
/invoice/1022
/cart/56
/ticket?user=12
/api/v1/GET /api/user/details?id=2001
You see your own data. Cute.
GET /api/user/details?id=2002
/download?file=invoice_102.pdf
Try:
/download?file=invoice_103.pdf
Not just reading — sometimes modifying:
PATCH /api/user/2002
{
"email": "hacked@evil.com"
}
"email", "role".
IDOR is:
If hacking was PUBG, IDOR is the “DP-28” — easy recoil, massive damage.