Есть ли способ сделать это? Получение необработанного файла .php с сервера (кроме доступа к FTP-учетной записи сервера)? Это причина, почему существуют инструменты / скрипты для шифрования исходного кода php?
Если это правда, то как защитить от этого? (без использования шифрования исходного кода php)
edit: упомянутый сервер имеет запуск php, например. apache-php-mysql, ваша стандартная конфигурация сервера хостинга.
Если вы говорите о чужом сервере, то короткий ответ – нет. Если бы третьи стороны могли читать ваш исходный код PHP, это было бы довольно дырой в безопасности, поскольку файлы PHP, как правило, содержат пароли базы данных, ключи хэша, проприетарные алгоритмы и другие полезные свойства, которые вы не хотите падать в чужие руки.
Если вы говорите о своем собственном сервере (то есть к которому у вас есть собственный доступ), тогда есть простые сценарии, которые вы можете разместить на сервере, которые позволяют вам указать путь к любому файлу на сервере и вернуть его как простой текст. Тем не менее, вы НИКОГДА НЕ хотите разместить такой скрипт на производственном сервере по указанным выше причинам.
Вообще говоря, вы не можете получить доступ к удаленному исходному коду. Для этого PHP-модуль должен быть отключен.
Но как мысленный эксперимент, как это может произойти?
Оставляя в стороне оптовые эксплойты, которые получают доступ ко всей файловой системе, представьте, есть ли в приложении отверстие для безопасности, которое позволило вам вставить строку в файл .htaccess. Учитывая, что .htaccess, доступный для записи в процессе httpd, полезен для таких приложений, как WordPress, он не слишком диковинный.
Если вы добавили это:
php_value engine off
Исходные файлы теперь становятся загружаемыми!
Возможно, если сервер не настроен так, что файлы PHP не являются собственно ручками.
Некоторые примеры:
.phps
. .inc
для файлов, которые должны быть включены с использованием include
или require
. Если сервер не настроен обрабатывать их как PHP, они будут доставлены в виде обычного текста, когда они будут запрошены напрямую. Но разработчик также может быть источником уязвимости. Например, когда он использует сценарий для загрузки файлов с сервера, и этот скрипт принимает почти каждый вход без проверки.
Если файл обслуживается с веб-сервера с включенной интерпретацией php (через HTTP), он будет обработан. Единственный способ получить код без обработки – это если PHP был отключен каким-то образом.
В прошлом я столкнулся с неправильно настроенным веб-сервером, который имел один виртуальный хост, правильно настроенный на серверные PHP-файлы через PHP-интерпретатор. Был второй виртуальный хост, указывающий на тот же каталог, но не поддерживающий php. Это означало такие вещи, как «config.php» для нескольких приложений, видимых как обычный текст. Поскольку каждый знает, что типичный config.php имеет учетные данные auth и другие вещи, которые не должны быть известны.
Поэтому очень важно понять настройку вашего веб-сервера и убедиться, что вы не делаете что-то глупое.