Перейти к содержимому
getnextpdf.com

Premium редакция

Два канала поставки: ionCube и подписанный исходный код

NextPDF Pro и Enterprise поставляются в двух формах, которые можно рассматривать как два канала одного и того же продукта:

  • Закодированный через ionCube — устанавливаемый PHP, исходный код которого закодирован и выполняется через ionCube Loader во время выполнения.
  • Подписанный открытый исходный код — читаемый исходный код на PHP, криптографически подписанный, чтобы вы могли убедиться, что он подлинный и не изменён.

На оба канала распространяются одна и та же лицензия и одни и те же права (оба регулирует NextPDF Commercial License Agreement, а доступ к читаемому исходному коду никогда не означает разрешения копировать или распространять его). Они существуют потому, что у двух типов клиентов есть две разные задачи, и мы оцениваем каждый канал соразмерно тому компромиссу, который он в себе несёт, — а не потому, что в одном из них больше функций, чем в другом. Эта страница объясняет ход рассуждений, чтобы вы могли сделать выбор осознанно. О практической настройке закодированной сборки см. Настройка ionCube Loader.

Почему защита исходного кода — реальная проблема в PHP

Заголовок раздела «Почему защита исходного кода — реальная проблема в PHP»

PHP поставляется и выполняется как исходный код. В отличие от языков, которые компилируются в непрозрачный двоичный файл или в байт-код перед распространением, рабочий исходный код PHP-пакета и есть то, что вы устанавливаете — среда выполнения читает его напрямую. Это одна из больших сильных сторон PHP: он прозрачен, его легко изучать, легко исправлять, и во многом именно поэтому его экосистема с открытым исходным кодом столь живая.

Именно поэтому у коммерческого PHP-проекта задача защиты сложнее, чем у его собратьев на других платформах. Инвестиции, вложенные в глубокий специализированный движок, — годы работы над стандартами, граничные случаи, наборы тестов — заключены в исходном коде, который по умолчанию передаётся в открытом виде. Эти инвестиции и есть коммерческая тайна: практическое ноу-хау, которое финансирует дальнейшую разработку, и актив, признаваемый и защищаемый законом. Защищать его — значит не прятаться от пользователей, а сохранять возможность финансировать работу.

Поэтому же защищать исходный код попросту проще в экосистемах, которые поставляют скомпилированные или байт-кодовые артефакты, — Java здесь распространённый пример: распространяемая форма уже на шаг удалена от рабочего исходного кода, и коммерческому поставщику приходится защищать меньше. Это упростило финансирование глубоких специализированных коммерческих инструментов там, тогда как значительная часть серьёзной работы в PHP опиралась вместо этого на добрую волю сообщества открытого исходного кода. Мы не считаем, что это закон природы. PHP тоже заслуживает профессиональных, активно поддерживаемых инструментов уровня стандартов, — а возможность защитить исходный код как раз и делает финансирование такой работы устойчивым.

Ответ NextPDF — открытое ядро с платным премиумом. Движок, на котором вы строите, — nextpdf/core — распространяется под Apache-2.0 и остаётся открытым; вы можете его читать, форкать и поставлять коммерчески. NextPDF Pro и Enterprise — это частные редакции, и именно доход от них оплачивает активную поддержку, соответствие стандартам и новые функции. Это разделение сделано намеренно: оно позволяет нам обслуживать команды, которым нужны профессиональные возможности уровня B2B, и при этом оставаться дружелюбными к отдельным разработчикам, ведь мы и сами начинали как разработчики-одиночки, любящие свободное программное обеспечение. Обоснование открытой половины раскрыто в Открытое ядро, без привязки к поставщику; эта страница — о том, как до вас доходит платная половина.

Для большинства клиентов закодированный через ionCube канал — это вариант по умолчанию. Кодирование исходного кода — признанный способ повысить стоимость его несанкционированного изменения и присвоения — позволяет нам защищать премиум-код с гораздо меньшими накладными расходами: меньше нестандартной работы с исходным кодом, меньше администрирования распространения и доступа, более лёгкое юридическое и правоприменительное бремя, чем при защите открытого исходного кода в больших масштабах. Эта экономия реальна, и мы передаём её вам.

Плата за это — умеренная стоимость во время выполнения: Loader декодирует закодированные файлы по ходу выполнения PHP, что добавляет некоторые накладные расходы. Мы отражаем этот компромисс в цене, чтобы вы могли честно его оценить, а не столкнуться с ним позже. На практике накладные расходы обычно невелики и зачастую пренебрежимо малы в типичных развёртываниях — и фактически не имеют значения на хосте, где ionCube Loader уже работает для другого программного обеспечения. Чувствительные к производительности нагрузки стоит протестировать на их собственном профиле; для подавляющего большинства развёртываний закодированный канал — это просто менее затратный вариант, и это именно то соответствие спроса и предложения, которого мы добиваемся. Настройка Loader — разовый шаг, описанный в Настройка ionCube Loader.

Канал с подписанным исходным кодом — для регулирования, аудита и надёжности цепочки поставок

Заголовок раздела «Канал с подписанным исходным кодом — для регулирования, аудита и надёжности цепочки поставок»

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

Это напрямую соответствует тому, как современная безопасность цепочки поставок предписывает обращаться с программным обеспечением: исходный код поставляется в пакете с цифровой подписью, подписи проверяются перед использованием, а проверяемый исходный код предпочтительнее непрозрачного артефакта для обеспечения надёжности и аудита (NIST SP 800-204D). Здесь код защищён не кодированием — он защищён законом и договором: он остаётся конфиденциальной коммерческой тайной PATEON, компании, стоящей за NextPDF, а то, что вы можете и не можете с ним делать, определяется NextPDF Commercial License Agreement. Возможность читать исходный код никогда не означает разрешения копировать, распространять или повторно лицензировать его.

Этот канал стоит дороже, и причина здесь обратна той, что у ionCube: он снимает накладные расходы во время выполнения, но перекладывает бремя защиты обратно на договор, доверие и администрирование — и эту стоимость берём на себя мы, чтобы клиенты, связанные требованиями соответствия, могли выполнять свои обязательства.

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

Канал ionCube периодически проверяет свою лицензию по сети. Премиум-сборка, поставляемая через закодированный канал, обращается к лицензионной службе NextPDF с регулярной периодичностью — примерно проверка раз в 7 дней, продлевающая аренду примерно на 14 дней. Пока развёртывание может связаться со службой в пределах этого окна, всё работает как обычно. Если оно остаётся без сети дольше срока аренды, премиум-функции приостанавливаются, и движок откатывается к бесплатному Core — он не останавливается, не выдаёт ошибку и не падает, — а после восстановления связи они возобновляются автоматически. Именно эта сетевая аренда делает лицензированное число рабочих мест контролируемым и позволяет отзыву вступить в силу в пределах окна аренды (около 14 дней плюс небольшой льготный период). Проверка отправляет только идентификатор лицензии и солёный хеш отпечатка — никогда содержимое ваших документов и никогда сырой отпечаток или IP-адрес.

Канал с подписанным исходным кодом может работать полностью без сети. Поскольку его подписанная лицензия — это самодостаточный артефакт, который движок проверяет локально, каналу с подписанным исходным кодом не требуется периодическое подключение, и он подходит для изолированных (air-gapped) развёртываний, ограничиваясь лишь собственным сроком действия лицензии. Здесь число рабочих мест — это договорный предел, установленный вашим соглашением, а не то, что контролируется во время выполнения; отзыв применяется при следующей сетевой проверке или через обновление продукта, а полностью автономное развёртывание не отправляет ничего.

Двое разных часов — не путайте их. Срок аренды канала ionCube (~14 дней) касается подключения — того, как долго развёртывание допускает работу без сети. Он не зависит от льготного периода в ~30 дней, который любой канал даёт после даты окончания подписки и в течение которого премиум-функции продолжают работать, пока вы продлеваете подписку, прежде чем движок откатится к Core. Истечение аренды и истечение подписки — это разные события на разных таймерах.

Какой бы канал вы ни использовали, режим отказа одинаков и всегда безопасен: NextPDF деградирует до бесплатного Core с открытым исходным кодом. Он никогда не превращается в «кирпич», никогда не блокирует вам доступ к уже развёрнутому программному обеспечению и никогда не останавливается посреди работы.

Эти два канала — не два продукта. Они дают идентичные лицензионные права и одно и то же программное обеспечение; разница лишь в том, как защищён исходный код, как лицензия проверяется во время выполнения и во что это обходится:

Закодированный через ionCubeПодписанный открытый исходный код
Что вы запускаетеЗакодированный PHP, через ionCube LoaderЧитаемый, подписанный исходный код на PHP
Как защищён исходный кодКодирование (технологическая мера) плюс лицензияЛицензия и закон о коммерческой тайне (без кодирования)
Лучше всего подходит дляБольшинства развёртываний; самая низкая стоимостьТребований регулирования / аудита / безопасности цепочки поставок
Стоимость во время выполненияНебольшие накладные расходы Loader (часто пренебрежимо малы; протестируйте при чувствительности к производительности)Ничего не добавляется с нашей стороны
Сетевая проверка лицензииПериодическая (~проверка раз в 7 дней, аренда ~14 дней)Необязательна; проверяется локально и работает без сети
Без сети / изолированная средаВ пределах окна аренды, затем премиум-функции приостанавливаются до Core (автоматическое возобновление при восстановлении связи)Полностью поддерживается; периодическое подключение не требуется
Число рабочих местКонтролируется через сетевую арендуДоговорное (по вашему соглашению); не контролируется во время выполнения
Отзыв вступает в силуВ пределах окна аренды (~14 дней + небольшой льготный период)При следующей сетевой проверке или через обновление продукта
Отправляемые данные лицензииТолько идентификатор лицензии + солёный хеш отпечатка (никогда содержимое, IP или сырой отпечаток)Ничего при полностью автономной работе
ПраваИдентичны — см. EULAИдентичны — см. EULA

Цена отражает этот компромисс между защитой и стоимостью во время выполнения, а не разницу в функциях. Актуальные цены и редакции см. в разделе Покупка и лицензирование и на странице цен, ссылка на которую там приведена; эта страница документации намеренно не повторяет ни цены, ни условия лицензии.

Мы предпочли бы, чтобы в экосистеме PHP было больше серьёзных, хорошо финансируемых, профессионально поддерживаемых инструментов — и меньше проектов, которые тихо выгорают, потому что не нашлось устойчивого способа финансировать ту глубину, которая им была нужна. Защита исходного кода — это и есть то, что позволяет нам вкладываться в эту глубину, сохраняя ядро открытым, а закодированный канал — доступным. И поскольку доверие нужно заслужить, мы стараемся быть прозрачными именно в этом: что защищает каждый канал, во что он вам обходится и почему, — чтобы взвешивать этот компромисс могли вы, а не мы — скрывать его от вас.