2014-09-11 64 views
-2

PHP代碼使用第三方編碼器(IonCube,Zend Guard)編碼後。 如何在編碼器上使用反射?這不會給很多代碼帶走嗎?PHP編碼之後的代碼有多安全?混淆呢?

據我所知,這些編碼器有一個到期日期。用舊版本編碼的代碼在某些時候一定會被破解。

我的解決方案是在對其進行了模糊處理後的代碼進行編碼(自定義寫混淆器)。一切都被縮小爲一個文件並被混淆。除了本地PHP函數/變量以外的任何內容都是亂碼。

這樣,如果在某些時候代碼被解碼,結果將是一個混亂,令人頭腦麻木的代碼。

該代碼是分佈式的,每個客戶端都有一個副本,並且它位於他們自己的LAMP服務器上。

無需擔心調試,每次發佈新版本時都會覆蓋代碼。

當然這裏有很多妥協。混淆限制了編碼技術/使用框架。

那麼,您如何評價代碼的安全性?混淆值得嗎?

如果不是,有沒有其他的選擇?你會考慮什麼是最佳解決方案?

謝謝,
福阿德

+1

已被要求的1000倍,而答案總是一樣的。對於任何認真獲取代碼的人來說,你所做的事情都是無用的。 – PeeHaa 2014-09-11 10:17:23

+0

直接訪問.php文件=直接訪問源文件。即使編碼或w/e您想要,只要機器可以運行它,它可以被轉回到乾淨的代碼。 – 2014-09-11 10:23:57

+0

是的,但是由此產生的代碼並不是那麼幹淨,因此混淆......整個事情就是一個亂碼代碼文件... – 2014-09-11 10:26:41

回答

6

後PHP代碼是使用第三方編碼器(Ioncube公司,Zend的後衛)編碼。如何在編碼器上使用反射?這不會給很多代碼帶走嗎?

它比這更微妙。公共代碼(函數名稱,全局變量等)設計爲將被交互。

就使用反射而言,爲內部函數/類禁用反射並不困難(這是他們將要做的)。這不一定是錯誤,但它可能會返回垃圾。由於編碼器可以訪問C,所以他們可以做任何他們想做的事情。

嗯,不是什麼。在某些時候,代碼仍然需要執行。要執行,它需要有一個操作碼數組。操作碼數組列出每個函數中的每個操作。

由於從操作碼轉換爲PHP代碼並不困難,編碼器基本上只比混淆器運行在有效的環境

編碼器可以執行的增值操作是對操作碼進行加密,以便您無法在非許可服務器上運行該操作碼。但是一旦你可以運行代碼,你可以隨心所欲地做任何事情。

用舊版本編碼的代碼必然會在某些時候被破解。

No.用代碼全部版本都可以破解。它所需要的只是執行能力。

我的解決方案是在代碼被混淆後(自定義寫混淆器)對代碼進行編碼。一切都被縮小爲一個文件並被混淆。除了本地PHP函數/變量以外的任何內容都是亂碼。

這正是編碼器無論如何做的。除了公共代碼(旨在與開發人員交互或擴展)之外,其餘部分僅僅是指針。所有命名信息都會丟失。所以你自己混淆是沒有必要的。

那麼,您如何評價代碼的安全性?混淆值得嗎?

您還沒有回答的問題是您試圖保護代碼的人。

您是否擔心有人使用您的代碼未經許可?如果是這樣,沒有編碼器可以保護你。因爲所有用戶需要做的就是轉儲操作碼,並且可以擁有代碼(沒有變量名稱,但不需要運行它)。這不是那麼簡單,但它是100%可行的。

你擔心有人修改你的代碼嗎?那麼,他們可以得到的代碼無論如何...因此...

你是否擔心有人在尋找代碼來找東西?像安全漏洞一樣?那麼,他們可以做到這一點。並試圖混淆它不會有幫助。

您是否擔心普通用戶進行修改?然後編碼將阻止這一點。

如果沒有,有沒有其他的選擇?

另一種方法是許可。你不需要隱藏代碼來保護它。根據限制性商業許可證進行授權。並使用法律制度追究任何人竊取或破壞許可證。這是保護軟件的唯一有效方法。

您認爲最佳解決方案是什麼?

不編碼,那麼多我可以告訴你:-)

+0

大聲笑感謝ircmaxell的見解:) 好吧,編碼器會有所幫助,但並不意味着它不可破解,這是公平的。 以用於模糊的想法浮現在腦海時,我發現這一點:decry.pt 上傳文件,得到解碼PHP文件中清楚和明白的文字... 它的工作對舊版本Ioncube公司的... 因此,作爲一種額外的預防措施我決定在編碼之前混淆基本的PHP代碼。這樣,我可以保護它免受普通開發人員的影響,如果在某個時候開裂ioncube是這麼簡單。 – 2014-09-12 12:49:27

+0

許可證是不幸的不是一種選擇。他們會心跳盜竊它。法律無法保護我遠離客戶。 將一些業務邏輯轉移到雲中怎麼樣? (已經在使用它)互聯網可用性不是問題。 – 2014-09-12 12:49:49

+0

@ f.farah在編碼之前混淆PHP代碼,使其看起來不同,除非它對代碼進行了*功能*更改,否則無法實現任何功能。請記住,編譯後的編碼消失了源代碼,「解碼」網站的工作原理是通過反編譯編譯後的代碼來重新創建源代碼。像ionCube這樣的編碼器不正確地編譯代碼,就好像你的源在功能上是不同的,所以使得精確的反轉相當困難,但最終任何技術都可以被反向設計和理解。披露:我與ionCube相關聯。 – Nick 2014-09-24 07:53:15