Блокировка путей с точкой
OxPHP блокирует доступ к любому URL-пути, содержащему сегмент, который начинается с ., возвращая 404 Not Found. Это предотвращает раскрытие конфиденциальных файлов, таких как .env, .git/, .htaccess, .svn/ и .DS_Store, которые часто становятся целью автоматических сканеров.
Эта защита всегда включена и не может быть отключена. Она применяется ко всем режимам маршрутизации (traditional, framework, SPA и worker).
Что блокируется
Любой запрос, в котором сегмент пути начинается с ., возвращает 404:
| Запрос | Результат |
|---|---|
/.env |
404 |
/.git/config |
404 |
/.htaccess |
404 |
/.DS_Store |
404 |
/.docker/config.json |
404 |
/path/.hidden/file.txt |
404 |
/path/to/.env |
404 |
Одноуровневые обходы через percent-кодирование также перехватываются: /%2egit/HEAD декодируется один раз в /.git/HEAD и отклоняется.
Исключение для .well-known
RFC 8615 определяет /.well-known/ как стандартное расположение для общесайтовых метаданных. OxPHP разрешает доступ к вложенным путям внутри .well-known с ограничениями:
| Запрос | Результат |
|---|---|
/.well-known/security.txt |
Отдаётся как статический файл |
/.well-known/acme-challenge/token |
Отдаётся как статический файл (Let's Encrypt) |
/.well-known/openid-configuration |
Отдаётся, если файл существует, иначе откат к ENTRY_FILE или 404 |
/.well-known |
404 (голый путь) |
/.well-known/ |
404 (листинг каталога) |
/.well-known/test.php |
404 (выполнение PHP заблокировано) |
PHP-файлы внутри .well-known никогда не выполняются — они всегда возвращают 404. Этот каталог отдаёт только статическое содержимое.
MIME-типы определяются по расширению файла. Файлы без расширения (например, openid-configuration) отдаются как application/octet-stream.
Ограничения
Входные данные с двойным кодированием (/%252egit/HEAD) декодируются только один раз и остаются /%2egit/HEAD, который на этом уровне не распознаётся как сегмент с точкой. Стандартные HTTP-клиенты и браузеры не применяют двойное кодирование, поэтому на практике это редко имеет значение; если ваш вышестоящий прокси нормализует URI перед пересылкой, однопроходного декодирования достаточно.
Промпты для вашего агента
Эти промпты рассчитаны на агента с подключённым MCP-сервером документации OxPHP — нужные страницы он прочитает сам.
Проверь, достаёт ли до моего приложения тот пробел в блокировке точечных путей при двойном кодировании, который описывает эта страница. Прочитай страницу `security/dot-path-blocking` через MCP-сервер документации OxPHP.
Посмотри, что стоит перед OxPHP в моём развёртывании, и скажи мне, нормализует ли оно URI с процентным кодированием перед тем, как передать их дальше, — а если нет, то до чего в моём репозитории реально доберётся запрос к `.git` или `.env` с двойным кодированием.Смотрите также
- Маршрутизация — режимы маршрутизации и безопасность путей