Как защитить центральный PHP-код, но при этом разрешить его включение из клиентских каталогов

У нас есть несколько разных клиентских каталогов (каждый из них — собственный домен), которые включают/требуют центральное приложение из другого места на сервере. По сути, каждый домен является расширением централизованного кода, но очень компактным, потому что весь основной код не нужно дублировать.

Если бы мы хотели предоставить клиентам/реселлерам доступ к редактированию их собственных кодов PHP, как бы мы помешали им прочитать центральный код, который мы хотим защитить?

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

open_basedir() делает почти это; он предотвращает открытие кода, но при этом также предотвращает включение.

Являются ли решения для шифрования кода (например, Zend Guard) нашими единственными вариантами, или есть способ, такой как open_basedir(), который позволяет включать? Я также думал об отключении всех функций чтения и написании своих собственных, которые проверяют источник.

Мысли?


person Sarke    schedule 11.06.2012    source источник
comment
Возможно, вам следует перепроектировать свою систему для RESTful API.   -  person flowfree    schedule 11.06.2012
comment
Это полноценное решение для веб-хостинга и панели администратора. Я не понимаю, как можно применить REST.   -  person Sarke    schedule 11.06.2012


Ответы (3)


Ответ: нет, вы не можете дать разрешение «чтение» и запретить им чтение... Если они могут «включить» код, они также могут написать простой php-скрипт, который читает файлы вашего центрального приложения и выводит содержимое на экран, Например.

person Nir Alfasi    schedule 11.06.2012
comment
Я думаю, что это очень узкий взгляд на это. Как насчет других возможных решений, которые я упомянул, таких как отключение функций чтения или использование кодировщика? - person Sarke; 11.06.2012
comment
Даже если вы заблокируете функцию php read(), есть другие варианты, такие как использование shell_exec(), которые может использовать клиент. Планируете ли вы проверить ВСЕ возможные варианты и заблокировать их один за другим? - person Nir Alfasi; 12.06.2012

Я считаю, что вы не можете ограничить чтение, если разрешите чтение глобально, однако вы можете отфильтровать доступ к своему сайту в файле .htaccess с помощью %{REMOTE_HOST} или аналогичного. По сути, если вы можете идентифицировать своих клиентов из их удаленных мест по IP или URL-адресу, я считаю, что вы можете ограничить чтение определенных каталогов в зависимости от того, кто получает доступ к сайту. Можете ли вы привести пример вашего PHP-кода для доступа реселлера к вашей стороне?

person Milan    schedule 11.06.2012
comment
Я думаю, вы неправильно поняли. Код торгового посредника будет находиться локально на том же сервере, что и центральное приложение, поэтому REMOTE_HOST ничего не сделает. - person Sarke; 11.06.2012

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

person Sarke    schedule 01.12.2012