SLOT-H: Защита доступа
В системе реализована защита доступа на уровне роутинга. Это первичный фильтр, который проверяет валидность запроса до того, как он попадёт в контроллер.
Проверка валидности запроса
При поступлении запроса система анализирует URI и определяет, является ли он прямым вызовом модуля/контроллера/экшена или ссылкой из таблицы `aliases`.
Прямой вызов - URI имеет структуру `module/controller/action`. Система проверяет существование каждого компонента.
Короткая ссылка - система ищет совпадение в таблице `aliases`. Если ссылка найдена, она заменяется на соответствующий внутренний путь. Если ссылка не найдена, запрос считается невалидным.
Если модуль не найден - запрос считается невалидным. Если контроллер или экшен отсутствуют - система выполняет редирект на страницу по умолчанию.
Это предотвращает вызов несуществующих точек входа и защищает от попыток обхода маршрутизации.
Брутфорс-защита
Если запрос пытается обратиться к несуществующему файлу или скрипту (например, напрямую к PHP-файлу в обход роутинга), система фиксирует это в таблице `brutus`. Для каждого такого запроса сохраняется URL и количество попыток.
Это позволяет отслеживать сканирование системы и принимать меры при подозрительной активности.
Редирект на IP
При подозрительных запросах система редиректит пользователя на его собственный IP-адрес. Это эффективно сбивает автоматические сканеры и ботов, которые ожидают получить стандартный ответ от сервера, а получают редирект на самих себя.
Обработка несуществующих модулей
Если запрошенный модуль не найден, система выполняет редирект на основную страницу проекта, указанную в ini-файле. Если предыдущий экшен использовал вызов метода `$this->setViewPath()`, система редиректит на последнюю успешно загруженную страницу.
Это обеспечивает плавный переход при ошибочных запросах и не даёт пользователю увидеть ошибку.
Защита от прямых вызовов
Любая попытка обратиться к файлам системы напрямую (минуя `index.php`) блокируется через `.htaccess`. Все запросы перенаправляются на единую точку входа, где выполняется проверка валидности.
Это предотвращает выполнение скриптов вне контекста роутинга и защищает от несанкционированного доступа к файлам системы.
Особенности реализации
- Проверка выполняется до загрузки контроллера, что делает защиту независимой от логики приложения.
- Система не выдаёт детальных сообщений об ошибках при невалидных запросах, чтобы не давать злоумышленникам информацию о структуре системы.
- Все подозрительные запросы логируются для последующего анализа.
Что дальше?
- ➡️ Раздел 26. Принцип локализации
- ➡️ Раздел 27. Запуск сервера очередей
- ➡️ Раздел 28. Задачи сервера очередей