Главная / Insecure Direct Object References
Что такое Insecure Direct Object References
Данный вид уязвимости является также следствием недостаточной проверки пользовательских данных. Суть ее заключается в том, что при выводе каких-либо конфиденциальных данных, например личных сообщений или учетных карточек клиентов, для доступа к объекту используется идентификатор, который передается в открытом виде в адресной строке браузера, И не реализована проверка прав доступа к объектам.
Как определить что приложение уязвимо
- Приложение не проверяет права доступа к объектам с ограниченным доступом
- Если ссылка на объект является косвенной, то необходимо проверить как приложение реагирует если убрать параметры привязанные к пользователю
/order?id=124&service=5434
→/order?id=&service=1
Пример уязвимости
Приложение использует в SQL запросе неподтвержденные данные от пользователя и при этом приложение в дальнейшем не проверяет права доступа.
$sql = 'SELECT * FROM `orders` WHERE `id`= ?';
Таким образом пользователь может узнать информацию по любому объекту order.
Защита
- Не использовать прямые ссылки на объекты.
- Например обфусцировать их либо писать id в сессию а пользователю отдавать случайную уникальную строку и потом искать id по ней.
- Проверять доступ к объектам.