跳到內容
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 ProEnterprise 是私有版本,來自它們的營收正是支付積極維護、標準符合性與下一批功能的來源。這樣的劃分是刻意為之的:它讓我們既能服務需要專業、B2B 等級能力的團隊,同時對個別開發者保持友善,因為我們自己一開始也是熱愛自由軟體的獨立開發者。開放那一半背後的考量,涵蓋於 開放核心,不綁定;本頁談的則是付費 那一半如何送達您手中。

ionCube 管道 —— 壓低價格的保護方式

標題為「ionCube 管道 —— 壓低價格的保護方式」的區段

對多數客戶而言,ionCube 編碼版是預設選項。將原始碼編碼 —— 一種公認可提高竄改與不當挪用成本的做法 —— 讓我們能以遠少得多的額外負擔保護進階程式碼:更少量身打造的原始碼處理、更少的散布與存取管理,以及比大規模守護明文原始碼更輕的法律與執行負擔。這些節省是實在的,我們也將其回饋給您。

代價是一筆不算高的執行階段成本:Loader 會在 PHP 執行時解碼那些已編碼的檔案,因而增添一些額外負擔。我們在定價中反映這項取捨,好讓您能誠實地評估它, 而不是日後才發現。實務上,這份負擔通常很小,在典型部署中往往可以忽略 —— 而在主機已為其他軟體執行 ionCube Loader 的情況下,基本上不成問題。對效能敏感的工作負載應針對自身的實際負載進行基準測試;但對絕大多數部署而言,編碼版管道就是成本較低的選項,而這正是我們希望達成的供需契合。設定 Loader 是一次性步驟,記載於 設定 ionCube Loader

已簽章原始碼管道 —— 因應法規、稽核與供應鏈保證

標題為「已簽章原始碼管道 —— 因應法規、稽核與供應鏈保證」的區段

有些客戶無法在其執行階段接受編碼過的程式碼。受到強力監理的組織,或有嚴格供應鏈安全與稽核要求的組織,需要能閱讀、審閱並驗證他們所執行的東西 —— 而他們通常也具備這些要求所隱含的預算。我們為他們提供已簽章的明文原始碼 管道:相同的版本以可閱讀的原始碼交付,經過加密簽章,讓其來源與完整性得以驗證。

這正好對應現代供應鏈安全期望軟體被處理的方式:以數位簽章的封裝交付原始碼、 在使用前驗證簽章,並在保證與稽核上偏好可審閱的原始碼勝過不透明的成品 (NIST SP 800-204D)。在這裡,程式碼並非靠編碼保護 —— 而是靠法律與契約保護:它仍是 NextPDF 背後公司 PATEON 的機密營業秘密,而您可以與不可以對它做什麼,則由 NextPDF Commercial License Agreement 規範。能夠閱讀原始碼,絕不等於獲准複製、再散布或重新授權它。

這條管道費用較高,原因正與 ionCube 的相反:它消除了執行階段的額外負擔,卻把保護的負擔轉回契約、信任與管理之上 —— 而那正是我們承擔的成本,好讓受法規遵循約束的客戶能履行其義務。

這兩種管道在應用程式執行時如何檢查授權上也有所不同,對於離線或 air-gapped 部署而言,這通常是決定性的因素。

ionCube 管道會定期在線上驗證其授權。透過編碼版管道交付的進階版本會依固定節奏向 NextPDF 授權服務報到 —— 大致是一次約 7 天的檢查,以續展一份約 14 天的租約。只要部署能在該時窗內連上服務,一切便正常運作。若它在租約到期後仍持續離線,進階功能便會暫停,引擎則退回免費的 Core —— 它不會停止、報錯或當機 —— 而一旦連線恢復,功能便會自動重新啟用。這份線上租約也正是讓已授權的座位數得以強制執行、並讓撤銷能在租約時窗內(約 14 天,外加一段短暫寬限)生效的機制。一次檢查只會送出一組授權識別碼與加鹽的指紋雜湊值 —— 絕不含您的文件內容,也絕不含原始指紋或 IP 位址。

已簽章原始碼管道可完全離線執行。由於其已簽章的授權是一份引擎在本機驗證的自足成品,已簽章原始碼管道不需要任何定期連線,並適合 air-gapped 部署, 僅受授權自身效期的限制。在這裡,座位數是由您的合約所設定的契約性上限, 而非在執行階段強制執行的東西;撤銷會在下一次線上檢查或透過產品更新時套用; 而純離線部署則不會送出任何東西

兩個各自獨立的計時器 —— 別把它們混為一談。ionCube 管道約 14 天的租約講的是連線能力 —— 一個部署能容忍離線多久。它與任一管道在訂閱到期日之後所給予的約 30 天寬限無關;在該寬限期間,進階功能會持續運作,讓您在引擎退回 Core 之前完成續訂。租約失效與訂閱到期,是不同計時器上的不同事件。

無論您執行哪一種管道,其失效模式都相同且始終安全:NextPDF 會降級為免費、 開源的 Core。它絕不會變磚、絕不會把您鎖在已部署的軟體之外,也絕不會在執行途中停止。

這兩種管道並不是兩項產品。它們承載完全相同的授權權利與相同的軟體;差別在於 原始碼如何被保護、授權在執行階段如何被檢查,以及那帶來什麼成本:

ionCube 編碼版已簽章的明文原始碼
您執行的內容經編碼的 PHP,透過 ionCube Loader 執行可閱讀、已簽章的 PHP 原始碼
原始碼如何被保護編碼(一種技術措施)加上授權授權與營業秘密法(無編碼)
最適合多數部署;成本最低受監理 / 稽核 / 供應鏈安全需求
執行階段成本一筆小幅的 Loader 額外負擔(通常可忽略;對效能敏感時請做基準測試)我方不增添任何負擔
線上授權檢查定期進行(約 7 天檢查一次,約 14 天租約)選用;於本機驗證並可離線執行
離線 / air-gapped至多維持到租約時窗,之後進階功能暫停並退回 Core(重新連線後自動恢復)完整支援;不需要定期連線
座位數透過線上租約強制執行契約性(依您的合約);不在執行階段強制執行
撤銷生效時機在租約時窗內(約 14 天,外加短暫寬限)於下一次線上檢查,或透過產品更新
送出的授權資料僅授權 ID 與加鹽的指紋雜湊值(絕不含內容、IP 或原始指紋)完全離線時不送出任何東西
權利完全相同 —— 參閱 EULA完全相同 —— 參閱 EULA

定價反映的是這項保護與執行階段之間的取捨,而非功能落差。關於目前的價格與版本, 請參閱購買與授權以及由該頁連向的定價頁;本說明文件頁面刻意不重述價格或授權條款。

我們寧願 PHP 生態系中有更多嚴肅、資金充裕、由專業維護的工具 —— 而更少有那些因為沒有可永續方式來資助其所需深度,而悄然耗盡心力的專案。保護原始碼,正是讓我們能投資於那份深度,同時保持核心開放、保持編碼版管道平實可負擔的關鍵。也因為信任是要靠努力贏得的,我們力求對此完全透明:每種管道保護什麼、它讓您付出多少成本,以及為什麼 —— 好讓這項取捨由您來權衡,而不是由我們來隱藏。