Security and Design指南詳細列出了各種方法,使攻擊者更難以妥協應用內計費實施。良好的軟件工程與安全
尤其值得注意的是,即使通過Proguard進行混淆,對.apk
文件進行反向工程也是多麼容易。所以他們甚至建議修改所有示例應用程序代碼,特別是「已知的入口點和出口點」。
我發現缺少的是在一個方法的任何參照包裝某些驗證方法,如靜態Security.verify()
返回boolean
:一個好的設計(減少了代碼重複,可重複使用,容易調試,自我記錄等),但是攻擊者現在需要做的就是識別該方法並使其始終返回true
...因此,不管我多少次使用它,延遲或不延遲,隨機或不隨機,它都無關緊要。另一方面,Java在C/C++中沒有宏,這允許減少源代碼重複,但是對於verify()
函數沒有單個退出點。
所以我的問題:
有著名的軟件工程/編碼實踐和設計用於所謂的安全性之間存在着固有的競爭? (至少在Java/Android /安全交易方面)
可以採取什麼措施來減輕「安全設計」的副作用,這似乎是「過度複雜化」軟件本來可以更簡單,更易維護且更容易調試?
您能否推薦進一步學習該主題的好資源?
Maday!我認爲我們有黑客! – 2012-01-10 02:56:35
對於應用程序內我相信安全類必須是您的應用程序服務器。 – 2012-01-10 02:59:02
代碼混淆的價值引起了熱烈的爭論,它不是* stackoverflow的用途。 – 2012-01-10 03:00:33