Блокировка путей с точкой
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 перед пересылкой, однопроходного декодирования достаточно.
Смотрите также
- Маршрутизация — режимы маршрутизации и безопасность путей