Лучшее решение для защиты кода PHP без шифрования - PullRequest
68 голосов
/ 03 декабря 2008

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

Хотя я ищу что-то другое ... Я не пытаюсь зашифровать свой код или даже запутать его. Существует много сценариев PHP без зашифрованного / зашифрованного кода, но они являются коммерческими приложениями. Например, приложения форума vBulletin и / или IP.Board.

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

Я также открыт для любых других предложений.

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

Ответы [ 11 ]

35 голосов
/ 03 декабря 2008

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

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

Разработка EULA является юридическим вопросом, а не вопросом кодирования. Вы можете начать с чтения текста EULA для продуктов и веб-сайтов, которые вы используете. Вы можете найти некоторые интересные детали!

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

Некоторые части EULA, которые приходят на ум:

  • Ограничение вашей ответственности, если продукт содержит ошибки или вызывает повреждение.
  • Объяснение того, как клиент может использовать свое лицензионное программное обеспечение, как долго, на каком количестве машин, с правами на распространение или без таковых и т. Д.
  • Предоставляя вам права на аудит своего сайта, вы можете применять лицензии.
  • Что произойдет, если они нарушают лицензионное соглашение, например, они теряют право использовать ваше программное обеспечение.

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

изменить: Если этот проект не может оправдать расходы на адвоката, проверьте эти ресурсы:

14 голосов
/ 03 декабря 2008

Вы должны учитывать ваши цели:

1) Вы пытаетесь запретить людям читать / изменять ваш код? Если да, вам понадобится инструмент запутывания / шифрования. Я успешно использовал Zend Guard .

2) Вы пытаетесь предотвратить несанкционированное распространение вашего кода ?? Лицензионное соглашение EULA / проприетарная лицензия даст вам юридическую силу для предотвращения этого, но на самом деле не остановит его. Схема ключа / активации позволит вам активно отслеживать использование, но может быть удалена, если вы также не зашифруете свой код. Zend Guard также имеет возможность привязывать определенный скрипт к конкретному клиентскому компьютеру и / или создавать ограниченные по времени версии кода, если вы этого хотите.

Я не знаком с vBulletin и тому подобным, но им нужно либо зашифровать / запутать, либо доверять своим пользователям, чтобы они поступали правильно. В последнем случае у них есть защита от наличия EULA, которая запрещает поведение, которое они считают нежелательным, и правовая система, подтверждающая нарушения EULA.

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

8 голосов
/ 03 декабря 2008

Вы можете использовать php-компилятор:

Roadsend

РНС

6 голосов
/ 03 декабря 2008

Я некоторое время не смотрел на исходный код VBulletin, но способ, которым они делали это примерно в 2003 году, заключался в том, чтобы встроить вызов на свой сервер внутри кода. IIRC, он был на очень длинной строчке кода (примерно 200-300+ символов) и был разбит на несколько конкатенаций строк и тому подобное.

Ничего «плохого» не получилось, если ты его пиратствуешь - форум все равно работает на 100%. Но IP вашего сервера был зарегистрирован вместе с другой информацией, и они использовали это для расследования и принятия юридических мер.

Ваш номер лицензии был включен в этот звонок, чтобы они могли легко отслеживать, сколько IP-адресов / веб-сайтов запущена на данной лицензированной копии.

2 голосов
/ 17 августа 2009

Если вы не можете создать «облачное приложение», которое вы размещаете сами и к которому вы получаете доступ через Интернет, то вы можете изучить создание виртуального устройства с использованием виртуального сервера (от VMWare, Parallels, Sun и т. Д.) И установить "облегченная" версия Linux на этом. Поместите ваш PHP-код в виртуальную среду и установите виртуальную машину на их сервер. Обязательно создайте способ предотвратить загрузку в корень. Конечно, это будет связано с физическим посещением клиента самостоятельно.

1 голос
/ 29 октября 2011

, на мой взгляд, так, но на всякий случай, если ваша php-программа написана для автономной модели ... лучшие решения - это c) Вы можете обернуть php в контейнер типа Phalanger (.NET). как все знают, он тесно связан с системой, особенно если ваша программа предназначена для пользователей Windows. вы просто можете создать свой собственный алгоритм защиты на языке программирования Windows, таком как .NET / VB / C #, или на том, что вы знаете в наборе .NET prog.lang.family.

1 голос
/ 03 декабря 2008

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

Но, как вы, наверное, знаете, нарушение авторских прав (пиратство) программных продуктов является довольно распространенным явлением .

0 голосов
/ 01 августа 2014

Zend Guard не поддерживает php 5.5 и его легко изменить, перейдите на http://www.ioncube.com для запутывания. http://wwww.phplicengine.com может лицензировать сценарии удаленно или локально.

0 голосов
/ 31 марта 2011

Итак, давайте посмотрим, мы хотим показать Адаму и Еве, что на дереве есть какой-то запретный плод, и нам бы хотелось, чтобы они не ели ...

Как насчет того, чтобы иметь ангела с огненным мечом?

  1. Звучит наивно, и я не знаю, что на самом деле делает ваше приложение, но как насчет широкого использования включений?

  2. Для законного пользователя все программное обеспечение должно быть видимым или только его части? Потому что вы могли бы запутать и дать копию исходного кода законному

  3. Вы можете обернуть php в контейнер как Phalanger (.NET)

  4. Возможно, вас беспокоит внешняя кража, т. Е. Ваш код свободно виден в Интернете по мере того, как его используют клиенты. Это может стоить инвестировать в дешевый хостинг для веб-сайта за 50 долларов в год, регистрируя ваших законных клиентов с помощью серийного номера в их коде и регулярно публикуя информацию на вашем приложении. По крайней мере, вы обнаружите, когда код был скомпрометирован. Вы можете начать самоуничтожение через n дней, что даст вам достаточно времени, чтобы связаться с клиентом и изменить серийный номер. Это может быть единственным запутанным include () всего кода

0 голосов
/ 04 сентября 2009

См. Наш SD PHP Обфускатор . Обрабатывает огромные системы файлов PHP. Нет требований времени выполнения на PHP-сервере. Никаких дополнительных затрат времени выполнения.

[РЕДАКТИРОВАТЬ Май 2016] В недавнем ответе отмечалось, что Zend не обрабатывает PHP5.5. Обфускатор SD PHP делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...