Лучшее решение для защиты PHP-кода без шифрования

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

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

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

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

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

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

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

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

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

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

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

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

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

  • « Совет EULA » на joelonsoftware
  • « Как написать лицензионное соглашение с конечным пользователем »

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

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

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

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

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

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

Roadsend

ПМП

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

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

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

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

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

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

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

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

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

В большинстве случаев я вижу лицензию и, возможно, гарантию. Строка в верхней части сценария, говорящая людям не изменять сценарий, может быть достаточно. Само; когда я нахожу не открытый исходный код, я не буду использовать его в своих проектах. Может быть, я немного обманул, но я ожидаю, что ppl не будет использовать мой код без OSS!

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

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

[EDIT май 2016] В недавнем ответе было отмечено, что Zend не обрабатывает PHP5.5. SD PHP Obfuscator делает.

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

Как насчет ангела с огненным мечом?

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

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

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

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