Блокування шляхів із крапкою

OxPHP блокує доступ до будь-якого URL-шляху, що містить сегмент, який починається з ., і повертає 404 Not Found. Це запобігає витоку чутливих файлів на кшталт .env, .git/, .htaccess, .svn/ і .DS_Store, на які найчастіше полюють автоматизовані сканери.

Note

Цей захист увімкнений завжди, і вимкнути його не можна. Він діє в усіх режимах маршрутизації (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 — потрібні сторінки він прочитає сам.

prompt
Перевір, чи може прогалина з подвійно закодованими шляхами з крапкою, описана на цій сторінці, зачепити мій застосунок. Прочитай сторінку `security/dot-path-blocking` через MCP-сервер документації OxPHP. Подивися, що стоїть перед OxPHP у моєму розгортанні, і скажи, чи нормалізує воно percent-закодовані URI перед пересиланням, а якщо ні — до чого в моєму репозиторії насправді дійде подвійно закодований запит до `.git` або `.env`.

Див. також