matthewboynes
  • 0
Учитель

Безопасный платный плагин WordPress

  • 0

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

Каков наилучший способ сделать это, предполагая:

  1. Я должен предоставить фактический исходный код пользователям и не могу иметь тип безопасности VideoPress, который является просто оболочкой JavaScript для фактического контента, поступающего с сервера плагина.
  2. Я хочу убедиться, что начинающий или средний разработчик PHP не сможет легко обойти защиту.
Share
  1. Я бы подумал о том, чтобы задать этот вопрос в Stack Overflow, так как суть вашего вопроса заключается в создании безопасной системы проверки лицензии, а не в чем-то специфичном для WordPress.

    • 0
    • Я только что сделал это по адресу: stackoverflow.com/questions/3462701/…. Я обновлю ответы здесь, если я получу там что-то лучше!

      • 0
    • Было бы полезно, если бы мы знали, что делает ваш плагин… Обрабатывает ли он данные? Добавить функцию пользовательского интерфейса? Синдицировать RSS-контент? Знание функции плагина поможет сообщить, какие существуют возможности для его защиты…

      • 0
    • @EAMann: я предполагаю, что это подпадает под тип системы «данные процесса». Меня больше интересовала попытка понять механизмы, которые используют текущие премиум-плагины, требующие активации. Пара, которую я купил, имеет довольно слабую безопасность до такой степени, что я задавался вопросом, почему они даже пытались включить функцию активации.

      • 0
    • есть ли пример кода для этого? Я знаю, что есть некоторые плагины, которые могут выполнять часть лицензирования, но я предпочитаю создавать свой собственный код.

      • 0
    • Все это правда, насколько мне известно.

      • 0
    • Что ж, VideoPress (созданный Automattic) не дает вам никакого кода, который он использует в плагине WordPress. Плагин WordPress — это просто вызов javascript на их сервер для обработки запроса, получения и предоставления правильных данных.

      • 0
    • Продолжая — Если они могут это сделать, то я почти уверен, что это законно. Я понимаю, что вы не можете скрыть исходный код или запретить людям распространять его. Опять же, это справедливо только для PHP-кода — создаваемые вами JS и CSS не подпадают под GPL, если только вы сами не подпадаете под это. Таким образом, вы всегда можете просто сказать своим пользователям, что они могут распространять весь PHP в вашем плагине по своему усмотрению, но JS и CSS не могут распространяться (подробнее см. лицензию Thesis).

      • 0
    • По моему мнению, даже для серверной части VideoPress выпущен некоторый исходный код. Но в любом случае вы ссылаетесь на сетевой сервис, который затем используется плагином. Например, сделать запрос к поисковой системе Google по термину. Естественно, такой плагин не будет предоставлять исходный код для поиска Google, а только то, как его вызывать. Я вижу разницу между реальным плагином и удаленным сервисом.

      • 0
    • @Milo: Как это должно работать? Закон не истолковывает факты, даже если вы сжимаете его в прецеденты. Однако в одной юрисдикции, о которой я знаю, есть прецедентное право — США — вы можете найти некоторые дела GPL. А по поводу деривативов: Там в кодексе написано. Я думаю, что в этих старых книгах закон даже называется «авторским правом». Скорее всего, по крайней мере, юридический кодекс или существующие дела считаются в ваших глазах мнением, верно?

      • 0
    • Это то, чего я боялся — и это путь, по которому я действительно не могу пойти, поскольку плагин, который я пытаюсь создать, довольно интенсивно использует данные.

      • 0
  2. Вариант 1. Обработка некоторых данных в вашей системе

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

    Вариант 2. Зашифровать сохраненные данные и потребовать размещенный ключ дешифрования.

    Другой альтернативой является базовая настройка шифрования — на самом деле это система, с которой я играл какое-то время, просто я еще не удосужился ее где-либо развернуть. Сам код (чтобы оставаться верным GPL) представляет собой открытый текст, как и следовало ожидать. Однако все сохраненные данные (значения по умолчанию, настройки плагинов и т. д.) перед сохранением в базе данных шифруются. Хитрость здесь в том, что плагин в удаленной системе не имеет ключа дешифрования — чтобы расшифровать данные, он должен опубликовать свой ключ API в вашей системе, которая затем ответит ключом дешифрования. Затем это может быть сохранено в переходном (временном) параметре в течение определенного периода времени, прежде чем оно будет сброшено — таким образом, у вас не будет сайта, который будет заходить на ваш сервер каждые 2 секунды во время интенсивного трафика.

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

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

    Вариант 3 — ограничить возможности «бесплатной» версии

    Последний вариант, над которым я активно работаю, — разделить набор функций и функций вашего плагина. Ядро системы (пользовательский интерфейс, основные функции и т. д.) находится в свободном доступе без регистрации. Для более продвинутых функций пользователи должны зарегистрировать свою копию, получить ключ активации, а затем ввести этот ключ в пользовательский интерфейс, чтобы завершить процесс — затем подключаемый модуль проверяет ваш сервер и загружает дополнительные «надстройки» премиум-класса в систему..

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


    В любом случае, если вы решите двигаться вперед, вам либо придется поддерживать какой-то внешний API на вашем сервере, либо предоставлять полный исходный код системы своим пользователям. Если вы сохраните некоторые функции в своей системе, вы почти должны гарантировать 100% время безотказной работы, чтобы они того стоили. Если вы собираетесь предоставить полный исходный код, нет никакого способа (по GPL) предотвратить повторное распространение вашей системы кем-то еще.

    • 0
  3. Вы не можете скрыть исходный код от пользователей WordPress, и вам не разрешено ограничивать распространение вашего плагина из-за последствий лицензирования.

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

    Предполагая, что WordPress находится под лицензией GPLv2, и у вас есть клиенты за пределами США, вам следует иметь дело с последствиями нарушения GPL, которые могут возникнуть в вашем («защищенном») продукте.

    Вы пытаетесь реализовать привязку к поставщику для своих пользователей.

    • 0
  4. Единственный способ получить распространяемый плагин с защищенной лицензией, которую не сможет взломать ни один приличный программист, — это запустить основные функции плагина на своем собственном сервере, таком как Akismet. Пользователь должен отправить на ваш сервер запрос, содержащий его лицензионный ключ. Если ключ проверен, выполните исходный код на своей стороне и отправьте результаты обратно.

    • 0

Оставить ответ

You must login to add an answer.