我无法确定以下情况的最佳方法。
- 我的应用程序 POST 到我的网络服务。
- POST URL 包含多个参数,包括设备信息 + 共享 key
- 设备存储在我的数据库中如果共享 key 正确
目前,此共享 secret 已硬编码在应用程序中,并且通过 SSL 连接到我的 Web 服务。
这显然限制了人们发现共享 secret 和滥用我的网络服务。
但是这种方法并不像我希望的那样安全,因为有可能解码我的应用程序等并获取 secret 。
有没有比共享 secret 方法更好的方法?
最佳答案
使用本地 key ,几乎所有安全方法都可能被某些人以某种方式泄露。这当然不意味着我们根本不需要付出任何努力。 如果人们下载您的应用程序,则可以通过 reengineering and or refactoring 进一步调查代码
但是,如果除了将 key 放入您的应用程序二进制文件之外别无他法,您将剩下一个(较弱)替代方案,通常称为 security through obscurity 。
有很多方法可以做到这一点,您可能会在互联网上找到很多关于这个主题的讨论,所以这里只是一些想法:
- 将 key 拆分到多个类并遍及您的代码
- 将您的 key 伪装成可以在您的应用中以正常方式使用的字符串
- 在启动时散列一些数据或代码段并将它们包含在您的 key 中
- 同时使用上面提到的所有方法
甚至还有一些框架,比如 UAObfuscatedString 这可能会帮助您实现您的逻辑。
请记住,最好的方法始终是不要在您的应用程序二进制文件中对 key 进行硬编码
,而是以某种方式从您的服务器“加载” key ,例如计算 key ……
关于ios - iOS App 的安全设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24392989/