<small>Предыдущие статьи:

- ➡️ [Раздел 22. Структура фронтенд части](/docs/22-layouts)
- ➡️ [Раздел 23. Выбор js-оболочки](/docs/23-js)
- ➡️ [Раздел 24. Динамическая подпись](/docs/24-security-sign)
</small>
# SLOT-H: Защита доступа

В системе реализована защита доступа на уровне роутинга. Это первичный фильтр, который проверяет валидность запроса до того, как он попадёт в контроллер.

---

## Проверка валидности запроса

При поступлении запроса система анализирует URI и определяет, является ли он прямым вызовом модуля/контроллера/экшена или ссылкой из таблицы `aliases`.

**Прямой вызов** - URI имеет структуру `module/controller/action`. Система проверяет существование каждого компонента.

**Короткая ссылка** - система ищет совпадение в таблице `aliases`. Если ссылка найдена, она заменяется на соответствующий внутренний путь. Если ссылка не найдена, запрос считается невалидным.

Если модуль не найден - запрос считается невалидным. Если контроллер или экшен отсутствуют - система выполняет редирект на страницу по умолчанию.

Это предотвращает вызов несуществующих точек входа и защищает от попыток обхода маршрутизации.

---

## Брутфорс-защита

Если запрос пытается обратиться к несуществующему файлу или скрипту (например, напрямую к PHP-файлу в обход роутинга), система фиксирует это в таблице `brutus`. Для каждого такого запроса сохраняется URL и количество попыток.

Это позволяет отслеживать сканирование системы и принимать меры при подозрительной активности.

---

## Редирект на IP

При подозрительных запросах система редиректит пользователя на его собственный IP-адрес. Это эффективно сбивает автоматические сканеры и ботов, которые ожидают получить стандартный ответ от сервера, а получают редирект на самих себя.

---

## Обработка несуществующих модулей

Если запрошенный модуль не найден, система выполняет редирект на основную страницу проекта, указанную в ini-файле. Если предыдущий экшен использовал вызов метода `$this->setViewPath()`, система редиректит на последнюю успешно загруженную страницу.

Это обеспечивает плавный переход при ошибочных запросах и не даёт пользователю увидеть ошибку.

---

## Защита от прямых вызовов

Любая попытка обратиться к файлам системы напрямую (минуя `index.php`) блокируется через `.htaccess`. Все запросы перенаправляются на единую точку входа, где выполняется проверка валидности.

Это предотвращает выполнение скриптов вне контекста роутинга и защищает от несанкционированного доступа к файлам системы.

---

## Особенности реализации

- Проверка выполняется до загрузки контроллера, что делает защиту независимой от логики приложения.
- Система не выдаёт детальных сообщений об ошибках при невалидных запросах, чтобы не давать злоумышленникам информацию о структуре системы.
- Все подозрительные запросы логируются для последующего анализа.

---

## Что дальше?

- ➡️ [Раздел 26. Принцип локализации](/docs/26-localization-principle)
- ➡️ [Раздел 27. Запуск сервера очередей](/docs/27-queue-start)
- ➡️ [Раздел 28. Задачи сервера очередей](/docs/28-queue-tasks)
