2009-01-31 16 views
12

Czy naprawdę można to zrobić? Pobieranie surowego pliku .php z serwera (innego niż wchodzenie na konto FTP serwera)? Czy to jest powód, dla którego istnieją narzędzia/skrypt do szyfrowania kodu źródłowego php?Zabezpieczenia PHP: pobieranie pliku PHP z serwera, nie przetworzone

Jeśli to prawda, to w jaki sposób się przed nią zabezpieczyć? (bez użycia php kodu źródłowego)

edytuj: wspomniany serwer ma uruchomiony php, np. apache-php-mysql, standardowa konfiguracja serwera hostingowego.

Odpowiedz

15

Jeśli mówisz o czyimś serwerze, to krótka odpowiedź brzmi "nie". Jeśli osoby trzecie mogłyby czytać twój kod źródłowy PHP, byłaby to luka w zabezpieczeniach, ponieważ pliki PHP zawierają zwykle hasła do bazy danych, klucze hash, zastrzeżone algorytmy i inne gadżety, których nie chcesz wpaść w niepowołane ręce.

Jeśli mówisz o swoim własnym serwerze (to znaczy, że sam masz dostęp), istnieją proste skrypty, które możesz umieścić na serwerze, które pozwalają określić ścieżkę do dowolnego pliku na serwerze i zwróć go jako zwykły tekst. Jednak NIGDY nie chciałbyś umieścić takiego skryptu na serwerze produkcyjnym, z powodów wymienionych powyżej.

+0

rozumiem. Wtedy jedynym sposobem jest załadowanie wspomnianego skryptu na serwer i uruchomienie go. Czy to jest to, co chcesz powiedzieć ? – andyk

+0

No tak, chyba że chcesz wyłączyć przetwarzanie php na serwerze lub zmienić nazwę plików php –

0

Jeśli plik jest obsługiwany z serwera WWW z włączoną interpretacją php (przez HTTP), zostanie przetworzony. Jedyny sposób, w jaki otrzymasz kod nieprzetworzony, jest w jakiś sposób wyłączony.

+0

umm .. nie, na serwerze działa php. Ale jeśli to jedyny przypadek, czy naprawdę istnieje sposób na majstrowanie przy serwerze, aby wyłączyć php? – andyk

+0

Nie, co? Nie rozumiem. Powiedziałeś to samo co ja. Ktoś zdalnie nie może wyłączyć php, chyba że ma dostęp do plików konfiguracyjnych. –

5

Ogólnie rzecz biorąc, nie można uzyskać dostępu do zdalnego kodu źródłowego. Moduł PHP musiałby być wyłączony, aby to nastąpiło.

Ale jak eksperyment myślowy, jak to może się stać?

Zostawiając na boku hurtowe exploity, które mają dostęp do całego systemu plików, wyobraź sobie, że w aplikacji istnieje luka w zabezpieczeniach, która pozwoliła ci wstawić linię do pliku .htaccess. Biorąc pod uwagę, że .htaccess zapisywalny przez proces httpd jest przydatny dla aplikacji takich jak Wordpress, nie jest to zbyt dziwaczna możliwość.

Jeśli dodałeś to:

php_value engine off 

plików Źródłem się obecnie do pobrania!

+0

Nie lubię widzieć twojego przedstawiciela. 8990? +1 ode mnie. ..kidding, fajna odpowiedź, wcześniej nie znałem tej metody. Dziękuję jak zawsze Paul. – andyk

4

Jest to możliwe, jeśli serwer nie jest dobrze skonfigurowany, aby pliki PHP nie były obsługiwane jako takie.

Kilka przykładów:

  • Niektóre serwery są skonfigurowane tak, aby pokazać highlighted source code of a PHP file żądanie jako .phps zamiast.
  • Niektórzy programiści używają .inc dla plików, które mają być dołączone przy użyciu include lub require. Jeśli serwer nie jest skonfigurowany tak, aby obsługiwał je również jako PHP, zostaną one dostarczone jako zwykły tekst, gdy będą żądane bezpośrednio.

Ale programista może również być źródłem luki w zabezpieczeniach. Na przykład, gdy używa skryptu do pobierania plików z serwera, a ten skrypt akceptuje prawie wszystkie dane wejściowe bez sprawdzania poprawności.

0

W przeszłości spotkałem źle skonfigurowany serwer sieciowy, który miał ustawiony jeden host wirtualny na pliki PHP serwera za pośrednictwem interpretera PHP. Był drugi wirtualny host wskazujący na ten sam katalog, ale nie włączono php. Oznaczało to rzeczy takie jak "config.php" dla kilku aplikacji, które są widoczne jako zwykły tekst. Jak każdy wie, typowy config.php ma referencje uwierzytelniające bazy danych i inne rzeczy, które nie powinny być znane.

Dlatego bardzo ważne jest, aby zrozumieć konfigurację serwera internetowego i upewnić się, że nie robisz czegoś głupiego.