我有一個用python編寫的應用程序。我爲使用egg文件的應用程序創建了一個插件系統。雞蛋文件包含編譯好的python文件,可以很容易地反編譯並用來破解應用程序。有沒有辦法來保護這個系統?我想爲此使用數字簽名 - 在加載這些雞蛋文件之前簽署這些雞蛋文件並檢查簽名。有沒有辦法通過python以編程方式執行此操作?也許使用winapi?用於python應用程序的安全插件系統
回答
也許一些像這樣的加密庫http://chandlerproject.org/Projects/MeTooCrypto有助於構建一個特別的解決方案。用法示例:http://tdilshod.livejournal.com/38040.html
有沒有辦法保護這個系統?
答案是「那要看」。
你應該問的兩個問題是「人們應該做什麼」以及「人們能夠做什麼(對於給定的實現)」。如果存在後者是前者的子集的實現,則系統可以被保護。
我的一位朋友正在開發一個編程競賽評委:一個程序,該程序在某些測試數據上運行用戶提交的程序,並將其輸出與參考輸出進行比較。這很難保證:你想運行其他人的代碼,但你不想讓他們運行任意代碼。你的情況有點類似於這個嗎?然後答案是「這很困難」。
你想讓用戶從網上下載不值得信任的代碼,並運行一些保證它不會軟管他們的機器嗎?然後看看各種網頁語言。一種解決方案是不提供對系統調用(JavaScript)的訪問或提供對某些潛在危險調用(Java的SecurityManager)的有限訪問。據我所知,它們都不能用python完成,但你總是可以破解解釋器,並且不允許加載外部模塊而不是在某些白名單上。這可能很容易出錯。
您是否希望用戶編寫插件,並且無法修補應用程序的主體代碼?考慮用戶可以反編譯.pyc文件並修改它們。假設那些運行你的代碼的人可以隨時修改它,並考慮WoW的黃金機器人。
一個類似於沙盒式web-ish模型的僅Linux解決方案是使用AppArmor,它限制了您的應用可以訪問哪些文件以及可以創建哪些系統調用。這可能是一個可行的解決方案,但我不太瞭解,所以除了「調查」之外,我不能給你提供建議。
如果您擔心的只是邪惡的人在代碼間傳輸時修改代碼,則存在標準加密解決方案(SSL)。如果您只想加載已簽名的插件(因爲您想控制用戶所做的事情),則簽名代碼聽起來就像是正確的解決方案(但要小心狡猾的用戶或編輯.pyc文件的惡意人員,並且禁用「is-it-簽字檢查)。
- 1. 應用程序插件系統
- 2. Android中的安全 - 谷歌應用程序引擎系統
- 3. MVC應用程序中的安全系統設計
- 4. 分佈式Web應用程序系統中的安全性
- 5. adb安裝系統應用程序
- 6. 基於全球定位系統的iPhone應用程序
- 7. 應用程序安全性:計算獨立於系統日曆的天數
- 8. 如何安裝應用程序作爲系統應用程序
- 9. 在Java中開發網絡安全應用程序和系統實用程序
- 10. 使用插件系統的Netbeans平臺應用程序
- 11. 安裝彈簧安全插件的Grails應用程序失敗
- 12. 將應用程序安裝爲根系設備上的系統應用程序
- 13. 在文件系統上運行的HTML/Javascript應用程序,安全問題
- 14. 用於控制系統軟件的.NET應用程序
- 15. PHP用戶系統安全
- 16. 在安全環境中的Windows系統上安裝應用程序
- 17. 在grails應用程序中安裝spring安全插件
- 18. 安全的應用程序
- 19. Ruby on Rails應用程序的擴展/插件/模塊系統?
- 20. codeigniter安裝 - 系統和應用程序文件夾的位置
- 21. Android系統應用程序
- 22. Android系統應用程序
- 23. 無法獲取作爲系統應用程序安裝的應用程序的簽名系統權限
- 24. 用於嵌入python的應用程序的PTVS插件
- 25. 紅寶石應用程序的安全插件API?
- 26. 返回一組未安裝系統應用程序的應用程序
- 27. 這是一個安全的認證系統的ajax驅動的應用程序?
- 28. Web應用程序安全
- 29. Android應用程序安全
- 30. MongoDb應用程序安全
「破解應用程序」是什麼意思?你擔心「惡意」用戶嗎?請提供一些用戶下載,安裝的用例,然後 - 什麼? - 打破他們下載的應用程序?請更詳細地解釋這種情況。 – 2009-05-25 22:44:48