Безопасность PHP : извлечение файла PHP с сервера, необработали

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

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

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

Ответ на: "Безопасность PHP : извлечение файла PHP с сервера, необработали"

Количество ответов:5

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

Однако, вы никогда не хотите разместить такой скрипт на производственном сервере, по причинам, упомянутым выше.

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

Если вы говорите о своем собственном сервере (т.е., что вы сами имеете доступ к), то Есть простые скрипты, которые вы можете поставить на сервере, которые позволяют указать путь к любому файлу на сервере и он вернулся в виде plaintext.

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

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

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

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

php_value engine off

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

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

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

  • Некоторые серверы настроены, чтобы показать highlighted source code of a PHP file when requested as .phps instead. instead. при запросе, как "--33-" вместо.
  • Некоторые разработчики используют .inc for files that are intended to be included using для файлов, которые предназначены для включения с помощью include or или require. If the server is not configured to handle these as PHP as well, they will be delivered as plain text when they are requested directly. . Если сервер не настроен для обработки этих как PHP, а также, они будут доставлены в виде простого текста, когда они запрашиваются непосредственно.

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

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

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