Безопасность PHP: получение файла PHP с сервера, необработанный - PullRequest
13 голосов
/ 31 января 2009

Есть ли способ сделать это? Получение необработанного файла .php с сервера (кроме получения доступа к учетной записи FTP на сервере)? Это причина, почему существуют инструменты / скрипт для шифрования исходного кода php?

Если это правда, то как защититься от этого? (без использования шифрования исходного кода php)

edit: на указанном сервере запущен php, например. apache-php-mysql, стандартная конфигурация вашего хостинг-сервера.

Ответы [ 5 ]

16 голосов
/ 31 января 2009

Если вы говорите о чужом сервере, то короткий ответ - нет. Если бы третьи лица могли прочитать ваш исходный код PHP, это было бы довольно дырой в безопасности, поскольку файлы PHP, как правило, содержат пароли базы данных, хэш-ключи, собственные алгоритмы и другие полезности, которые вы не хотите попадать в чужие руки.

Если вы говорите о своем собственном сервере (то есть, к которому у вас есть доступ), то есть простые сценарии, которые вы можете поместить на сервер, которые позволяют вам указать путь к любому файлу на сервере и иметь он вернулся в виде открытого текста. Однако вы НИКОГДА не хотите размещать такой сценарий на рабочем сервере по причинам, указанным выше.

6 голосов
/ 31 января 2009

Вообще говоря, вы не можете получить доступ к удаленному исходному коду. Чтобы это произошло, модуль PHP должен быть отключен.

Но как это может произойти в качестве мысленного эксперимента?

Оставляя в стороне оптовые эксплойты, которые получают доступ ко всей файловой системе, представьте, если в приложении была дыра в безопасности, которая позволяла вставить строку в файл .htaccess. Учитывая, что .htaccess, доступный для записи процессом httpd, полезен для таких приложений, как Wordpress, это не слишком странная возможность.

Если вы добавили это:

php_value engine off

Исходные файлы теперь становятся загружаемыми!

4 голосов
/ 31 января 2009

Возможно, если сервер недостаточно хорошо настроен, чтобы файлы PHP не обрабатывались как таковые.

Некоторые примеры:

  • Некоторые серверы настроены на отображение выделенного исходного кода файла PHP при запросе вместо .phps.
  • Некоторые разработчики используют .inc для файлов, которые должны быть включены с использованием include или require. Если сервер также не настроен для обработки этих данных как PHP, они будут доставлены в виде простого текста при прямом запросе.

Но разработчик также может быть источником уязвимости. Например, когда он использует скрипт для загрузки файлов с сервера, и этот скрипт принимает практически все входные данные без проверки.

1 голос
/ 31 января 2009

Если файл подается с веб-сервера, на котором включена интерпретация php (через HTTP), он будет обработан. Единственный способ получить код без обработки - это если PHP каким-то образом отключен.

0 голосов
/ 31 января 2009

В прошлом я сталкивался с неправильно настроенным веб-сервером, на котором один виртуальный хост был правильно настроен для работы с файлами PHP через интерпретатор PHP. Был второй виртуальный хост, указывающий на тот же каталог, но php не был включен. Это означало что-то вроде «config.php» для нескольких приложений, которые видны как обычный текст. Как все знают, типичный config.php имеет учетные данные для аутентификации базы данных и другие вещи, которые не должны быть известны.

Итак, очень важно понять настройки вашего веб-сервера и убедиться, что вы не делаете глупостей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...