IDOR (Insecure Direct Object Reference) це вразливість контролю доступу, коли застосунок дає доступ до об'єкта за ідентифікатором з запиту, не перевіряючи, чи має право цей користувач саме до цього об'єкта. Формально це CWE-639, а в OWASP API Security Top 10 вона стоїть першою під назвою Broken Object Level Authorization.

Як це зустрічається на практиці

Найпоширеніша діра в сучасних застосунках, і вона не потребує жодних інструментів. Сервер перевірив, що ви залогінені, і на цьому зупинився. Але не перевірив, що замовлення, профіль чи файл, який ви запитуєте, справді ваш.

Приклад

Ви відкриваєте своє замовлення за адресою:

Міняєте одну цифру:

Так відкривається чужа людина, чужа сума, іноді телефон і адреса. Класичний реальний приклад: у 2019 компанія First American Financial через IDOR лишила відкритими сотні мільйонів документів, просто заміною номера в URL.

Як захиститись

Кожен запит на об'єкт має перевіряти власника, а не лише факт входу. Правило просте: умова WHERE id = ? майже завжди має бути WHERE id = ? AND owner_id = ?.