Лучшее решение для защиты PHP кода без шифрования
во-первых, я не ищу чудо... Я знаю, как работает PHP, и что на самом деле нет способа скрыть мой код от клиентов без использования шифрования. Но это связано со стоимостью расширения, которое будет установлено на работающем сервере.
Я ищу что-то другое, хотя... Я не ищу, чтобы зашифровать мой код или даже запутать его. Есть много PHP скриптов без зашифрованного / запутанного кода, но они являются коммерческими приложениями. Например, vBulletin и/или IP.Совет форума приложений.
Я просто хочу знать, какой подход эти ребята используют для своих приложений...
Я также открыт для любых других предложений.
Пожалуйста, обратите внимание, что я один человек и не работаю в компании. Мой продукт также очень специфичен, он не будет продавать так много. Я просто хочу, чтобы вы знали, что я не могу позволить себе обратиться к юристу, чтобы подать в суд или подготовить коммерческую лицензию. Я просто ищу простой способ защитить мой простой продукт, если это действительно возможно, так или иначе...
11 ответов:
запутывание вещей может только доставлять неудобства вашим законным, законопослушным клиентам, в то время как люди, которые будут вас грабить, в любом случае не являются вашими целевыми платежными клиентами. (отредактировал другие мысли об обфускации)
еще одно предложение по защите вашего программного обеспечения: создайте бизнес-модель, в которой код является неполной частью стоимости Вашего предложения. Например, продавать лицензии на продукты вместе с доступом к некоторым данным, которыми вы управляете на своем сайте, или лицензировать продукт по модели подписки или с поддержкой клиентов.
разработка лицензионного соглашения является юридическим вопросом, а не вопросом кодирования. Вы можете начать с чтения текста лицензионного соглашения для продуктов и веб-сайтов, которые вы используете. Вы можете найти некоторые интересные детали!
создание проприетарной лицензии является очень гибким и, вероятно, предметом за пределами предполагаемой области StackOverflow, поскольку речь идет не только о кодировании.
некоторые части лицензионного соглашения, которые приходят к ум:
- ограничение ответственности, если продукт имеет ошибки или причиняет вред.
- изложение того, как клиент может использовать свое лицензионное программное обеспечение, как долго, на скольких машинах, с правами перераспределения или без них и т. д.
- предоставление Вам прав на аудит своего сайта, чтобы вы могли применять лицензии.
- что происходит, если они нарушают лицензионное соглашение, например, они теряют право использовать ваше программное обеспечение.
вы должны проконсультируйтесь с юристом, чтобы подготовить коммерческое лицензионное соглашение.
edit: если этот проект не может оправдать расходы адвоката, проверьте эти ресурсы:
- "EULA advice" на joelonsoftware
- "Как написать лицензионное соглашение с конечным пользователем"
вы должны рассмотреть ваши задачи:
1) вы пытаетесь помешать людям читать / изменять ваш код? если да, то вам понадобится инструмент обфускации/шифрования. Я использовал Zend Guard С хорошим успехом.
2) вы пытаетесь предотвратить несанкционированное распространение кода?? лицензия EULA / proprietary даст Вам юридическую силу предотвратить это, но на самом деле не остановит его. Схема ключа/активации позволит вам активно отслеживать использование, но может быть удален, если вы также не зашифруете свой код. Zend Guard также имеет возможность заблокировать конкретный скрипт на конкретной машине клиента и / или создать ограниченные по времени версии кода, если это то, что вы хотите сделать.
Я не знаком с vBulletin и тому подобное, но им либо нужно шифровать/запутывать, либо доверять своим пользователям, чтобы делать правильные вещи. В последнем случае они имеют защиту от наличия лицензионного соглашения, которое запрещает поведение, которое они считают нежелательным, и правовая система для поддержки нарушений лицензионного соглашения.
Если вы не готовы/не можете принять законные меры для защиты своего программного обеспечения, и вы не хотите шифровать/запутывать, ваши варианты: а) выпустить его с помощью лицензионного соглашения, чтобы у вас был законный вариант, если он вам когда-либо понадобится, и надеяться на лучшее, или б) рассмотреть вопрос о том, может ли лицензия с открытым исходным кодом быть более подходящей и просто разрешить перераспределение.
Я не смотрел на исходный код VBulletin в течение некоторого времени, но то, как они это делали в 2003 году, заключалось в том, чтобы встроить вызов на свой сервер внутри кода. IIRC, он был на очень длинной строке кода (например, 200-300+ символов длиной) и был разбит на несколько конкатенаций строк и тому подобное.
Он не сделал ничего "плохого", если вы его пиратствовали - форум Все еще работал на 100%. Но IP вашего сервера был зарегистрирован вместе с другой информацией, и они использовали это для расследования и принятия юридических мер.
ваш номер лицензии был встроен в этот вызов, поэтому они могли легко отслеживать, сколько IP-адресов/веб-сайтов работает на данной лицензионной копии.
Если вы не можете создать "облачное приложение", которое вы размещаете самостоятельно, и они получают доступ через интернет, то вы можете изучить создание виртуального устройства с помощью виртуального сервера (от VMWare, Parallels, Sun и т. д.) и установить на него "облегченную" версию Linux. Поместите свой PHP-код в виртуальную среду и установите виртуальную машину на своем сервере. Убедитесь в том, чтобы создать способ предотвращения загрузки в корень. Конечно, это будет включать в себя физическое посещение клиента самостоятельно.
они распространяют свое программное обеспечение под лицензия. Закон защищает их права и не позволяет их клиентам перераспределять источник, хотя на самом деле нет никаких трудностей в этом.
но, как вы, возможно, хорошо знаете, нарушение авторских прав (пиратство) программных продуктов является довольно распространенное явление.
на мой взгляд есть, но на всякий случай, если ваш php код программы написан для автономной модели... лучшие решения-это c) вы можете обернуть php в контейнер, такой как Phalanger (.NET). как все знают, он плотно привязан к системе, особенно если ваша программа предназначена для пользователей windows. вы просто можете сделать свой собственный алгоритм защиты на языке программирования windows, как .NET/VB / C# или все, что вы знаете в .NET prog.ленг.семейные наборы.
единственный способ действительно защитить ваши php-приложения от других, это не делиться исходным кодом. Если вы размещаете свой код где-то в интернете или отправляете его своим клиентам с помощью какого-либо носителя, другие люди, кроме вас, имеют доступ к коду.
вы можете добавить уникальный водяной знак к каждой копии вашего кода. Таким образом, вы можете проследить утечки обратно к опаленному клиенту. (Но поможет ли это вам, так как код уже находится вне вашего контроля?)
большинство кода я вижу, что с лицензией и, возможно, гарантией. Строка в верхней части сценария, говорящая людям не изменять сценарий, может быть, будет достаточно. Self; когда я нахожу не открытый исходный код, я не буду использовать его в своих проектах. Может быть, я немного обманут, но я ожидаю, что ppl не будет использовать мой код none-OSS!
Zend Guard не поддерживает php 5.5 и легко реверсируется, перейдите на http://www.ioncube.com для запутывания. http://wwww.phplicengine.com можно лицензировать скрипты удаленно или локально.
смотреть SD PHP Obfuscator. Обрабатывает огромные системы PHP-файлов. Нет требований к времени выполнения на PHP-сервере. Никаких дополнительных накладных расходов во время выполнения.
[редактирование май 2016] в недавнем ответе отметил, что Зенд не справиться с РНР5.5. Обфускатор SD PHP делает.
Итак, давайте посмотрим, мы хотим показать Адаму и Еве, что на дереве есть какой-то запретный плод, и нам бы хотелось, чтобы они не ели...
Как насчет того, чтобы иметь ангела с пылающим мечом?
может показаться наивным, и я не знаю, что ваше приложение делает на самом деле, но как насчет широкого использования включает в себя?
для законного пользователя, все программное обеспечение, которое должно быть видно или только его части? Потому что ты может запутать и дать копию исходного кода для законных
вы можете обернуть php в контейнер, такой как Phalanger (.NET)
возможно, вас беспокоит внешняя кража, то есть ваш код свободно виден через интернет, поскольку клиенты его используют. Это может быть стоит инвестировать в дешевый хостинг веб-сайта, за $ 50 в год, регистрируя своих законных клиентов с серийным номером в своем коде и регулярно публиковать информацию о своем приложении на своем веб-сайте. На по крайней мере, вы обнаружите, когда код был скомпрометирован. Вы можете нажать его с самоуничтожением через n дней, что даст вам достаточно времени, чтобы связаться с вашим клиентом и изменить серийный номер. Это может быть единственный запутанный include() всего кода