## Ошибки контроля доступа
## Описание уязвимостей этого типа
Контроль доступа это одно из самых важный мест в алгоритме приложения. Именно эта часть отвечает за разграничение доступа.
Так как особенности клиент-серверного взаимодействия не всегда могут давать возможность приложению понять кто отправляет запрос, для этого контроль доступа базируется на следующих компонентах:
- аутентификаци
- управление сессией
- авторизация

### Основные типы и примеры уязвимостей
При обнаружении уязвимости могут быть:
- эскалация привилегий горизонтально
- эскалация привилегий вертикально
- эскалация привилегий в зависимости от контекста действия
## Небезопасный доступ по идентификатору
Чаще всего результатом использования предсказуемых идентификаторов в приложении приводит к горизонтальной эскалации привилегий.
Пользователь угадав номер ресурса другого пользователя может получить к ним доступ.
Проблема здесь состоит:
- предсказуемый идентификатор
- отсутствие контроля доступа по идентификатору
### Последствия эксплуатации
Атакующий получает возможность изменять, обозревать и копировать информацию, которая будет принадлежать другим пользователям системы.
Так же может стать доступен интерфейс настройки приложения и тогда система вся перейдет под контроль аткующего.
### Практическое задание
Access control раздел - https://portswigger.net/web-security/all-labs
### Способы защиты
Все уязвимости достаточно просто можно избежать. Самый главный принцип - постановка требований к программному обеспечению должна содержать пункты о необходимости реализации разграничения доступа ко всем объектами прилоежния.
Так же должны быть приняты политики запрета доступа к ресурсам приложения, если только это необхоимо работой алгоритма.
Необходимо проводить аудит прав в системе с помощью автотестирования функционала.
Стоит ввести правило для разработки любого функционала - что бы не работало в приложении, нужно обязательно проверить кто запускает функцию.