前陣子在搞 Android 的混淆,在第三方套件和映射的機制上吃了不少苦頭,最近嘗試把 codeigniter4 做加密,選擇使用 ionCube 套件。這套件並非免費的,pro 版本折合台幣大約 10k 左右,也是不便宜,而選擇他的優點有幾個:
- 目前最新版尚未有破解、解密的服務。
- 加密功能選項完整,可設定 ip 限制、網域限制、限制時間等以及外部金鑰檔案等等。參考。
- 可選作混淆功能(不過這樣不會很難 debug 嗎?)
- 可設定需要加密的檔案,並非直接整個專案加密。
- 可以設定非 PHP 檔案加密(未嘗試)
- 可執行 hook 等多種設定,詳細參考官網。
估計他的版本週期是跟著 PHP 版本走的, 所以購買最佳實機應該是在 PHP 出了一個新版本之後再來購買會比較好。
而他簡單實作的是無框架的 PHP 服務。我針對使用 Codeigniter 4 的框架做了加密動作,以下筆記幾個注意事項:
- 可加密的範圍是 app/ 內除了 Config/ 資料夾以外的檔案資料夾。參考圖一。
- 設定專案時可以把整個專案設定在內,除了可加密範圍之外,其他選擇 copy 動作。
- skip 的動作可以是 .DS_Store、 .user.ini 等等或是其他不想要發布的檔案,可充當過濾檔案使用。
- 混淆的選項請不要混淆 class 和 method ,弄個不好會有名字對不起來的問題。參考圖二。更建議連 function 也別混淆,呼叫操作很容易對不上的。
update:解決方法可以參考這裡,不過尚未嘗試。 - 如果使用 git 發布的話,要記得考慮清楚原始未加密的程式碼是否也要上 git。
- 有部分版本無法加密,參考圖三。
- 伺服器要能夠安裝 ionCube loader 套件,這滿重要的,不裝起來會無法讀取,如果有設定金鑰的話也需要確認是否可以放置。
以上。
—