Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

php_value engine off

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

Ответ 3

Возможно, если сервер не настроен так, что файлы PHP не обрабатываются как таковые.

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

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

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

Ответ 4

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

Ответ 5

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

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