良好的软件工程与安全性
安全和设计指南详细概述了各种方法,使攻击者更难以破坏应用内计费实现。
特别值得注意的是,即使通过Proguard进行模糊处理,对文件进行反向工程也非常容易。因此,他们甚至建议修改所有示例应用程序代码,尤其是“已知入口点和退出点”。.apk
我发现缺少的是对将某些验证方法包装在单个方法中的任何引用,例如返回的静态:一个好的设计实践(减少代码重复,可重用,更易于调试,自我记录等),但攻击者现在需要做的就是识别该方法并使其始终返回...因此,无论我使用它多少次,延迟与否,随机与否,都无关紧要。Security.verify()
boolean
true
另一方面,Java没有像C / C++那样的宏,这可以减少源代码重复,但没有函数的单一出口点。verify()
所以我的问题:
众所周知的软件工程/编码实践与所谓的安全性设计之间是否存在固有的争论?(至少在Java/Android/Secure Transactions的背景下)
可以做些什么来减轻“安全设计”的副作用,这似乎是“在过度复杂化软件方面”,这些软件本来可以更简单,更易于维护,更容易调试?
你能推荐很好的资源来进一步研究这个主题吗?