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.

Note

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