Blokowanie ścieżek z kropką
OxPHP blokuje dostęp do dowolnej ścieżki URL zawierającej segment zaczynający się od ., zwracając 404 Not Found. Zapobiega to ujawnieniu wrażliwych plików takich jak .env, .git/, .htaccess, .svn/ i .DS_Store, które są częstym celem automatycznych skanerów.
Ta ochrona jest zawsze włączona i nie można jej wyłączyć. Obowiązuje we wszystkich trybach routingu (traditional, framework, SPA oraz worker).
Co jest blokowane
Każde żądanie, w którym segment ścieżki zaczyna się od ., zwraca 404:
| Żądanie | Wynik |
|---|---|
/.env |
404 |
/.git/config |
404 |
/.htaccess |
404 |
/.DS_Store |
404 |
/.docker/config.json |
404 |
/path/.hidden/file.txt |
404 |
/path/to/.env |
404 |
Jednopoziomowe obejścia z kodowaniem procentowym również są wychwytywane: /%2egit/HEAD dekoduje się jednorazowo do /.git/HEAD i zostaje odrzucone.
Wyjątek .well-known
RFC 8615 definiuje /.well-known/ jako standardową lokalizację dla metadanych obejmujących całą witrynę. OxPHP zezwala na dostęp do podścieżek w obrębie .well-known, z ograniczeniami:
| Żądanie | Wynik |
|---|---|
/.well-known/security.txt |
Serwowany jako plik statyczny |
/.well-known/acme-challenge/token |
Serwowany jako plik statyczny (Let's Encrypt) |
/.well-known/openid-configuration |
Serwowany, jeśli plik istnieje, w przeciwnym razie awaryjnie ENTRY_FILE lub 404 |
/.well-known |
404 (sama ścieżka) |
/.well-known/ |
404 (listowanie katalogu) |
/.well-known/test.php |
404 (wykonywanie PHP zablokowane) |
Pliki PHP wewnątrz .well-known nigdy nie są wykonywane — zawsze zwracają 404. Ten katalog serwuje wyłącznie treści statyczne.
Typy MIME są określane na podstawie rozszerzenia pliku. Pliki bez rozszerzenia (jak openid-configuration) są serwowane jako application/octet-stream.
Ograniczenia
Dane wejściowe z podwójnym kodowaniem (/%252egit/HEAD) są dekodowane tylko raz i pozostają jako /%2egit/HEAD, co nie jest rozpoznawane przez tę warstwę jako segment z kropką. Standardowe klienty HTTP i przeglądarki nie stosują podwójnego kodowania, więc w praktyce rzadko ma to znaczenie; jeśli Twoje nadrzędne proxy normalizuje identyfikatory URI przed przekazaniem, jednoprzebiegowe dekodowanie jest wystarczające.
Zobacz też
- Routing — tryby routingu i bezpieczeństwo ścieżek