Как защитить открытый PHP код?

Я в том смысле, какие способы и приемы эффективно использовать для защиты исходников на PHP?

К примеру, я создал программу серверную, и хочу, чтобы была помесячная оплата за использование скриптов, как сделать так, чтобы ее не ломанули... а то нулл версия мне как-то не очень нравится :D

Сразу оговорюсь, хочу услышать не стадо троллей, а реальные ответы, которые помогут или натолкнут на создание качественной защиты! Как известно, чем больше защиты, тем лучше, так что чем больше идей, тем более объемным ответ окажется для тех, кого интересует подобные вопросы!
  • Вопрос задан
  • 8678 просмотров
Пригласить эксперта
Ответы на вопрос 13
Люди платят за качество, так что лучше бы время потратили на улучшение продукта, а не на защиту исходников, которые все равно сломают при необходимости.
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Качественной защиты не будет. Если ваш продукт будет интересен кому-либо, его взломают и он рано или поздно появится на варезах разных.

Жадность это плохо, если хотите что бы люди реально покупали - делайте продукт как SaaS с возможностью купить отдельно для установки на локали. Либо можно бросить силы на поиски нуленых версий и просить удалить раздачи.
Ответ написан
RayMefise
@RayMefise
Java, PHP, C, C++, C#, .NET, QT
Сам код ты никак не защитишь. В лучшем случае тебе помогут копирайты и лицензирование кода. Если тебя интересует защита от использования без лицензии, то есть один способ который я применял в своем проекте. Этот способ защищает не на 100% но может доставить гемороя тем кто решит использовать ваш продукт бесплатно. Оговорюсь так же что способ этот не всем может подойти.

Теперь собственно сам способ. Часть кода PHP без которого не будет работать ваш проект переносим на CGI написанный например на СИ++.
В CGI встраиваем проверку лицензии привязанную во первых к маку и IP сервера на котором будет работать проданный ресурс. Вторую часть проверки переносим на ваш сервер с лицензиями. То есть продукт при работе должен периодически (или при определенных операциях) проверять установленную лицензию которая вшита в CGI. При проверке ваш программный продукт обращается к серверу и отправляет ему шифрованную информацию о лицензии. По этой информации на вашем сервере определяются данные о сервере и так же шифрованно отправляются назад программному продукту. Тот сверяет эти данные с данными о сервере и если данные верны генерирует временный токен, который сохраняет в укромном месте вашего программного продукта и отправляет на ваш сервер с лицензиями. Для защиты от подмены данный о сервере, после успешной проверки отправляйте запрос на ip сервера вызывая определенную функцию CGI которая должна сопоставить токены. если совпадают, то лицензию проверял действительно программный продукт с сервера на который он зарегистрирован. При этом система должна автоматически обновляться с вашего сервера до последней версии и во время обновлений вам необходимо изменять методы шифрования. Так как CGI закрыт и внутри него содержатся важный для работы функционал, то удалить его или взломать будет проблематично. Возможно система запутанная и не лишена недостатков, но в работе показала себя неплохо.

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

Надеюсь смог вам помочь.
Ответ написан
oxyberg
@oxyberg
Продуктовый дизайнер ВКонтакте
Обфускация, проверка лицензии у сервера, SaaS (ну, для вас не подойдет).
Ответ написан
Комментировать
BuriK666
@BuriK666
Компьютерный псих
Ответ написан
Комментировать
@PiloTeZ
...
Мои предложения:
1. Зашифровать файл. Расшифруют, но не сразу, многим лень или не умеют, так что можно выиграть много времени
2. Замаскировать участок кода, проверяющий лицензию под другой скрипт (например сделать вид, что этот код работает с кэшем)
3. Можно вшить код проверки в какую-нибудь популярную библиотеку. К примеру написать код в глубине класса PHPExcel
4. Можно маленькую, но важную часть скрипта перенести на свой сервер. Тогда юзер врядли сможет бесплатно полноценно использовать вашу программу
5. Есть вариант обфусцировать код

Если скомбинировать некоторые варианты, то получится довольно трудная для взлома защита

Я подобную задачу просто решил, зашифровал файл проверяющий ключи в base64 через сервис visavi.net/services/encryption.php. Расшифровать не трудно, но нужно не много подумать. Покупатели были новички в программировании, поэтому ~1.5 года скрипт был в целости и сохранности.
Ключ кстати просто генерировался из домена :D

Для платных программ обязательно надо делать хотя бы минимальный уровень защиты, иначе можно потерять вообще всю прибыль. Чем хитрее защита, тем дольше скрипт будет в сохранности
Ответ написан
@RomanoFFUA
Пробуйте копать в сторону Zend или Ioncube. Хотя, это тоже не панацея.
Ответ написан
Andriyevski Bitrix в свое время шифровали исходники и все равно их нулили, сейчас они отказались от этой практики. Это жжжж не спроста.
Ответ написан
afiskon
@afiskon
Обфускация. Пишится синтаксический анализатор PHP, затем выпиливаются комментарии, имена переменных и функций и классов заменяются на a1,b2,c3, код сжимается в одну строку. Почти уверен что уже есть куча готовых решений для этого. В крайнем случае несложно написать свой обфускатор.
Ответ написан
Комментировать
@lihtenshtein
Как посоветовали однажды создателю Simpla CMS, не защищай код. Подумай лучше как продвигать CMS так, что бы получить максимальную выгоду от пиратских копий. Ну т.е. развивайся так, что бы тебе было на руку то, что твою прогу везде можно скачать и т. д.
Ответ написан
ilyacoding
@ilyacoding
Можно использовать ionCube, Zend для более сильной защиты. Обфускация может защитить ваш скрипт от обычных пользователей. Эти способы могут потянуть время. За это время необходимо дорабатывать свой продукт и как можно чаще выпускать обновления. Если обновления будут выходить часто, то пока покупатели взломают скрипт, он уже будет неактуален, так как выйдет новая версия.
Ответ написан
Комментировать
kentovsky
@kentovsky
php, js, mysql разработчик
берем zephir и прячем свой код в расширение С
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы