後PHP代碼是使用第三方編碼器(Ioncube公司,Zend的後衛)編碼。如何在編碼器上使用反射?這不會給很多代碼帶走嗎?
它比這更微妙。公共代碼(函數名稱,全局變量等)設計爲將被交互。
就使用反射而言,爲內部函數/類禁用反射並不困難(這是他們將要做的)。這不一定是錯誤,但它可能會返回垃圾。由於編碼器可以訪問C,所以他們可以做任何他們想做的事情。
嗯,不是什麼。在某些時候,代碼仍然需要執行。要執行,它需要有一個操作碼數組。操作碼數組列出每個函數中的每個操作。
由於從操作碼轉換爲PHP代碼並不困難,編碼器基本上只比混淆器運行在有效的環境。
編碼器可以執行的增值操作是對操作碼進行加密,以便您無法在非許可服務器上運行該操作碼。但是一旦你可以運行代碼,你可以隨心所欲地做任何事情。
用舊版本編碼的代碼必然會在某些時候被破解。
No.用代碼全部版本都可以破解。它所需要的只是執行能力。
我的解決方案是在代碼被混淆後(自定義寫混淆器)對代碼進行編碼。一切都被縮小爲一個文件並被混淆。除了本地PHP函數/變量以外的任何內容都是亂碼。
這正是編碼器無論如何做的。除了公共代碼(旨在與開發人員交互或擴展)之外,其餘部分僅僅是指針。所有命名信息都會丟失。所以你自己混淆是沒有必要的。
那麼,您如何評價代碼的安全性?混淆值得嗎?
您還沒有回答的問題是您試圖保護代碼的人。
您是否擔心有人使用您的代碼未經許可?如果是這樣,沒有編碼器可以保護你。因爲所有用戶需要做的就是轉儲操作碼,並且可以擁有代碼(沒有變量名稱,但不需要運行它)。這不是那麼簡單,但它是100%可行的。
你擔心有人修改你的代碼嗎?那麼,他們可以得到的代碼無論如何...因此...
你是否擔心有人在尋找代碼來找東西?像安全漏洞一樣?那麼,他們可以做到這一點。並試圖混淆它不會有幫助。
您是否擔心普通用戶進行修改?然後編碼將阻止這一點。
如果沒有,有沒有其他的選擇?
另一種方法是許可。你不需要隱藏代碼來保護它。根據限制性商業許可證進行授權。並使用法律制度追究任何人竊取或破壞許可證。這是保護軟件的唯一有效方法。
您認爲最佳解決方案是什麼?
不編碼,那麼多我可以告訴你:-)
已被要求的1000倍,而答案總是一樣的。對於任何認真獲取代碼的人來說,你所做的事情都是無用的。 – PeeHaa 2014-09-11 10:17:23
直接訪問.php文件=直接訪問源文件。即使編碼或w/e您想要,只要機器可以運行它,它可以被轉回到乾淨的代碼。 – 2014-09-11 10:23:57
是的,但是由此產生的代碼並不是那麼幹淨,因此混淆......整個事情就是一個亂碼代碼文件... – 2014-09-11 10:26:41