Развертывание веб-сайта PHP на клиентском сервере без отображения файлов PHP - PullRequest
1 голос
/ 08 июня 2010

Я задал недавний вопрос, касающийся использования readfile () для удаленного выполнения PHP, но, возможно, я бы лучше изложил проблему, чтобы посмотреть, не ошибаюсь ли я в этом, поэтому вот так:

  • У меня есть веб-сайт на PHP, который требует от пользователей входа в систему, включает в себя множество форм, соединений с базой данных и использует переменные $ _SESSION для отслеживания различных вещей
  • У меня есть потенциальный клиент, который хотел бы использовать функциональность моего веб-сайта, но на своем собственном сервере, контролируемом ими. Возможно, они захотят изменить стиль веб-сайта, используя контент и CSS-файлы, локальные для их сервера, но это проблема для более позднего
  • Я не хочу показывать им свой PHP-код, поскольку это ценность того, что я бы предоставил.

Я думал сделать это с помощью вызовов include () с клиентского сервера на мой, который, по крайней мере, сохраняет область действия переменной, но многие сайты (и документы PHP), похоже, рекомендуют readfile (), file_get_contents () или аналогичный. В идеале я хотел бы иметь простой файл-обертку на сервере клиента для каждого «реального» на моем сервере.

Любые предложения относительно того, как я могу достичь того, что мне нужно?

Спасибо, ColmF

Ответы [ 7 ]

6 голосов
/ 08 июня 2010

Как и предполагалось, комментарий опубликован как ответ и изменен прикосновением

PHP является интерпретирующим языком и поэтому «читает» файлы и анализирует их. Да, в некоторых случаях он может хранить кэшированный байт-код, но это не похоже на языки более высокого уровня, которые компилируются и работают в байт-коде. Это означает, что php 'compiler' требует, чтобы ваш фактический исходный код работал. Посетите сайт zend.com/en/products/guard, который может делать то, что вы хотите, хотя я считаю, что это означает, что ваш клиент должен использовать Zend Server.

Если подписать контракт с компанией, в котором есть пункты о неиспользовании вашего кода и т. Д., И т. Д., То это ваша лучшая защита в этом случае. Вы также должны быть осторожны, если вы используете что-нибудь под «открытым кодом» лицензии на все ваше приложение можно считать открытым исходным кодом и, таким образом, все это спорно.

Это не нестандартная практика для многих компаний. Я создал программное обеспечение, которым я особенно горжусь, и компания хочет его использовать. Поскольку они верят в свою собственную информационную безопасность либо по «личным причинам», либо потому, что они должны соответствовать стандарту, такому как PCI, иногда мои приложения должны работать в их средах. Я предложил свои продукты как «веб-сервисы», где они запрашивают данные на моих серверах и получают ответы. В этом случае мой источник полностью защищен, поскольку он ничем не отличается от любого другого закрытого API. В каждом случае я лицензировал копию для клиента с положениями, что им не разрешается изменять или распространять ее. Это юридически обязывающий договор и полностью ожидаемый от клиентской стороны вещей. Конечно, были положения, что я буду оказывать поддержку и т. Д., Но это ни здесь, ни там.

Короткие ответы:

  • Юридическое соглашение, вероятно, ваш лучший выбор с точки зрения каждого
  • Zend Guard, как продукт, никогда не использовал его, поэтому я не могу поручиться за него
  • Частный API, но он не будет работать для вас, так как клиент должен разместить его

Удачи!

4 голосов
/ 08 июня 2010

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

Вы даете им лицензию на программное обеспечение и удостоверяетесь, что в договоре указано, что интеллектуальная собственность принадлежит вам, и ее нельзя копировать / распространять и т. Д. Без предварительного разрешения (очевидно, вам потребуется более легальная версия, чем эта, но выполучить представление).

3 голосов
/ 08 июня 2010

Вместо удаленного выполнения я предлагаю вам использовать систему защиты исходного кода PHP, такую ​​как Zend Guard, ionCube или sourceguardian.

http://www.zend.com/en/products/guard/

http://www.ioncube.com/

http://www.sourceguardian.com/

1 голос
/ 08 июня 2010

По сути, вы ищете способ прокси своего приложения на удаленный сервер (т. Е. Ваши клиенты). Использовать что-то вроде readfile() на сайте клиента - это нормально, но вам все равно понадобится несколько сценариев на их конце. По сути, readfile очищает то, что доступно по определенному пути к файлу или URL-адресу, и передает его конечному пользователю. Так что если бы я сделал readfile('google.com'), он бы вывел исходный код для главной страницы Google.

Предполагая, что вы не просто хотите иметь фиктивную форму на сайтах своих клиентов, вам понадобится какой-то код, вывешенный на их конце. Код должен будет перехватывать отправку формы (поэтому вам потребуется параметр URL на странице, которую вы просматриваете с readfile, чтобы сообщить вашему коду, что URL отправки формы - это сайт вашего клиента, а не ваш). Эта страница (страница обработчика отправки формы) должна будет делать обратные звонки на ваш собственный сайт. Подумайте как-то так:

readfile("https://your.site/whatever?{$_SERVER['QUERY_STRING']}");

Ваш сайт затем обработает ответ и затем передаст все обратно на сайты ваших клиентов.

Надеюсь, я вывел вас на правильный путь. Дайте мне знать, если мне неясно; Я понимаю, что это много информации.

1 голос
/ 08 июня 2010

Я думаю, вам будет тяжело с этим, если вы не захотите какую-нибудь забавную оболочку, которая будет curl печатать запросы на ваш сервер. Особенно, когда речь идет о таких вещах, как сессии и файлы cookie.

Вы уверены, что PHP-обфускатор не будет достаточным для того, что вы делаете?

0 голосов
/ 08 июня 2010

Вы не можете помешать им увидеть ваш код.Вы можете сделать так, чтобы им было очень трудно понять ваш код, что является хорошим вторым лучшим.См. SD PHP Обфускатор .

0 голосов
/ 08 июня 2010

Вместо того, чтобы размещать его самостоятельно, почему бы не сделать то, что делает большинство php-приложений, и просто распространить программу для вашего клиента с функцией автообновления?Хостинг сам по себе сложен, от управления веб-сайтами до того, кто платит за хостинг.

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

...