Блокування шляхів із крапкою
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 у моєму розгортанні, і скажи, чи нормалізує воно percent-закодовані URI перед пересиланням, а якщо ні — до чого в моєму репозиторії насправді дійде подвійно закодований запит до `.git` або `.env`.Див. також
- Маршрутизація — режими маршрутизації та безпека шляхів