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 = ?.
