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

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

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

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

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

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

Ответ 1

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

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

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

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

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

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

Roadsend

phc

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

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

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

Ответ 9

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

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

Ответ 10

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

Ответ 11

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

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

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

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

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

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