#php #encryption
#php #шифрование
Вопрос:
Можем ли мы развернуть PHP-приложение на клиентском сервере и запретить клиенту просматривать или редактировать какой-либо код.
Например, если я не хочу, чтобы мой клиент передавал код другим разработчикам без моего разрешения.
Комментарии:
1. Для этого и существуют подписанные контракты. Юридически обоснованные и защищаемые контракты.
2. Если это то, что вы чувствуете, звучит как плохая работа…
3. Теоретически у вас нет возможности помешать пользователю изменять код, работающий на его собственном сервере, так, как он хочет, поэтому все, что вы делаете, может только замедлить его… но это не то, о чем вам следует беспокоиться, вы должны закодировать сайт, получить зарплату и перейти к следующей работе. Если вы можете объединять сайты, вы можете найти надежные рабочие места без необходимости DRM ваших продуктов. Red Hat не зарабатывает миллиарды на запутывании кода, совсем наоборот…
Ответ №1:
Я изучал шифрование кода PHP в прошлом, но это принципиально плохая идея.
На рынке существует ряд решений, таких как Ion Cube и Source guardian, но все они имеют один и тот же недостаток.
Дополнительный шаг расшифровки кода добавит накладные расходы на обработку, и, подобно системе DRM, все решения на рынке требуют, чтобы у вас был ключ шифрования, доступный серверу, на котором выполняется код, что делает шифрование тривиальным для поражения. Это также вводит множество новых способов, которыми ваш код может пойти не так.
Альтернативный подход заключается в предоставлении исходного кода в виде байтового кода или использовании PHPC или HipHop для предоставления кода в виде исполняемого файла на C. Это не остановит их использование приложения, но людям будет сложно вносить изменения. Я бы лично рассматривал этот подход только по соображениям производительности, а не для запутывания.
По сути, лучший способ справиться с этой проблемой — убедиться, что у вас есть правильные лицензии и соглашения, которые покрывают вас. Перед началом проекта всегда должно быть ясно, кому будет принадлежать исходный код в конце.
Вы получаете повторную работу, предоставляя лучшее решение, а не блокируя клиентов.
Ответ №2:
У Zend есть продукт под названием Zend Guard, который может запутать ваш исходный код.
Другим решением было бы предоставить уже скомпилированную версию, вы можете использовать php compiler
или phalanger
.
Примечание: запутывание не помешает пользователю использовать код, но затруднит его обновление / модификацию. По моему мнению, наилучшими вариантами были бы доставка скомпилированной версии или просто подписание надлежащего контракта
Комментарии:
1. @sage29: Я никогда не использовал Zend Guard, но я предполагаю, что он работает в любых проектах, то же самое касается компилятора php…
2. Я пробовал это некоторое время назад, и оно работало с любым кодом, но для этого требуется, чтобы сервер установил расширение.
3. @SeRPRo: ха, так что он может выполнять те же действия, что и компилятор, преобразовывать php-код в некоторый байкод и напрямую использовать виртуальную машину php