Zauważyłem, że możliwe jest uruchamianie pliku przez PHP, nawet jeśli jego rozszerzenie nie było .php
, na przykład plik test.xyz.php.whatever.zyx
może być nadal uruchomiony z PHP, nawet jeśli rozszerzenie nie jest .php
! Tak się składa, że w nazwie pliku jest .php.
i to wystarczy, aby mój Apache mógł uruchomić skrypt PHP.Jak bezpiecznie uniemożliwić uruchomienie przesłanego pliku za pośrednictwem PHP na dowolnym serwerze?
próbowałem (jak ktoś zasugerował), aby umieścić to w pliku .htaccess
tego folderu:
php_flag engine off
Ale to nie działa na moim komputerze.
Jedyne rozwiązania wiem na teraz to:
- Zmień nazwę, aby znane rozszerzenia pliku, który nie jest prowadzony za pośrednictwem PHP, takich jak
.txt
. - Usuń wszystkie kropki z nazwy pliku, dzięki czemu nie ma żadnych rozszerzeń.
Ale nadal nie jestem pewien, w jaki sposób te rozwiązania będą działać na innych serwerach niż mój serwer Windows (z Apache).
Czy istnieją inne rozwiązania, które nie wymagają nazwy pliku w żaden sposób zmieniany?
Zmiana nazwy plików jest zalecana z punktu widzenia bezpieczeństwa. również, sprawdź http://stackoverflow.com/questions/3499173/my-php-site-was-hacked-by-codes-uploaded-as-image, dlaczego powinieneś także dodać pewne polecenia do pliku php.ini – SeanC
@ SeanCheshire, dzięki za cynk. teraz, jeśli połączę to z odkryciami, o których powiedziałem, założę się, że wiele innych stron będzie można z nim hakować. (zbyt leniwy, aby sprawdzić się również, jego nielegalne;). – Rookie
nie zawsze nielegalne: http://www.hackthissite.org/ – SeanC