**Access control (ограничение доступа)** - приложение, накладывающее ограничения на то, кто или что авторизовано для выбранных действий или запрашиваемых рессурсов. В контексте веб-приложений, ограничение доступа зависит от аутентификации и менеджменте сессий. 1. **Аутентификация** позволяет определить, что пользователь является тем, кем он представляется. 2. **Менеджер сессий** - идентифицирует какие последующие HTTP запросы были сделаны одним и тем же пользователем. 3. **Ограничение доступа** определяет, может ли юзер выполнить действие, которое он захотел выполнить. Сломанное ограничение доступа часто встречается и представляют из себя критические уязвимости. Разработка и управление системой ограничения доступа это комплексная проблема. ### Вертикальный контроль доступа **Вертикальный контроль доступа** - механизмы, которые ограничивают доступ к конфиденциальным функциям определенным типам пользователей. Благодаря вертикальному контролю, разные типы пользователей имеют доступ к различным функциям приложения. К примеру, админ может модифицировать или удалять любой пользовательский аккаунт, в отличие от простого пользователя, который не имеет доступа к этим функциям. ### Горизонтальный контроль доступа **Горизонтальный контроль доступа** - механизм, ограничивающий доступ к ресурсам конкретным пользователям. При горизонтальном контроле доступа, разные пользователи имеют доступ к подмножеству рессрсов одного типа. К примеру - приложение банка позволяет пользователю видеть транзакции и оплачивать с помощью их собственного аккаунта, но не с помощью аккаунта других пользователей. ### Контексто-зависимый контроль доступа **Контексто-зависимый контроль доступа** - механизм, ограничивающий доступ к функционалу и ресурсам, основывающийся состоянии приложения или взаимодействия пользователя с ним. Контексто-зависимый контроль доступа запрещает пользователю выполнять действия в неправильном порядке. К примеру - пользователь не может менять состав заказа после его оплаты. ## Примеры сломанного контроля доступа ### Эскалация вертикального контроля доступа Если пользователь может повысить доступ к функционалу, к которому у него не должно быть доступа, то это эскалация вертикального контроля доступа. К примеру, если обычный пользователь может получить доступ к странице администратора, где он может удалять аккаунты других пользователей, это и есть эскалация. **Незащищенный функционал** В большинстве случаев, эскалация привелегий вертикального контроля доступа происходит, когда сервис не обеспечивает соблюдение какой-либо защиты для чуствительного функционала. например, ссылки могут быть связаны со страницей приветствия администратора, но не со страницы приветствия пользователя. Суть в том, что не защищают админскую панель, а просто прячат **robots.txt** Или напрямую в тексте скрипта приложения. ### Горизонтальная эскалация привеленгий **Горизонтальная эскалация** происходит, если пользователь получает доступ к ресурсам, которые предназначенны для другого пользователя, вместо собственных ресурсов такого же типа. Пример: если атакующий может получить доступ к записям других пользователей, словно это его записи - это горизонтальная эсказация. `https://insecure-website.com/myaccount?id=123` если такующий изменяет `id` и получает доступ к аккаунту другого пользователя - это и есть эскалация. (В моем техникуме, на платформе procolledge была горизонтальная эскалация привелегий.)