SLOT-H: Защита доступа



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




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



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

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

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

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

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




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



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

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




Редирект на IP



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




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



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

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




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



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

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




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



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




Что дальше?



- ➡️ Раздел 26. Принцип локализации
- ➡️ Раздел 27. Запуск сервера очередей
- ➡️ Раздел 28. Задачи сервера очередей