我注意到社交网络中大多数主要参与者的一些教程都有示例,其中与您的帐户相关联的 API key (通常在计划文本中)嵌入到源代码中。例如,Google Maps APIs Premium Plan .此 key 用于向您的公司收费。
我在 Is it safe to put private API keys in your .m files when exporting to the appstore? 中发现了一个类似的问题1 - 值得注意的是,任何拥有越狱手机的人都可以看到未加密的可执行文件。
这种做法实际上是否安全,如果是,为什么?
Best Answer-推荐答案 strong>
在应用程序中嵌入 API key 并不安全,通常也不是一个好的做法,但确实需要大量的工作因素才能获得它们,这并非易事。除了操作系统执行之外,没有工具可以解密可执行文件。
RE:“任何拥有越狱手机的人都可以看到未加密的可执行文件。”不是真的。只是越狱不会解密应用程序二进制文件,它只是在二进制文件加载到 RAM 中执行并且 key 不可用时解密,它在 DMA 路径中的硬件中解密。需要添加调试工具,并在二进制加载到内存后捕获执行。
您需要确定攻击者是谁、攻击者将花费多少技能和时间以及对您造成的损失。
没有 100% 安全的解决方案,只会增加工作系数。
另一种方法是在登录服务器时第一次运行时获取 API key ,然后将它们移动到钥匙串(keychain)。但这也只是增加了工作因素,因为如上所述,可执行文件在发送到服务时可以在运行时进行检查。
只要 key 在执行的任何部分都必须在应用内存中,它就很容易受到攻击。
将 API key 放在源中可能会满足安全需求。
关于ios - 为什么将 key 放入 iOS 二进制文件是安全的,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/35978943/
|