php 在iPhone应用程序中存储API密钥是否不安全?

yxyvkwin  于 12个月前  发布在  PHP
关注(0)|答案(2)|浏览(171)

我正在创建一个iPhone应用程序,它需要连接到一个基于PHP的网站。iPhone应用程序将检索和添加记录。我猜网站和iPhone应用程序之间的通信应该由一个API密钥控制。iPhone应用程序提供它,网站检查它。
我猜我必须将该API密钥存储在iPhone应用程序本身中,对吗?所以我的问题;将API密钥存储在iPhone应用程序中有风险吗?不能有人以某种方式访问我的API密钥并模仿iPhone应用程序从而访问网站吗?或者这很难做到吗?如果我想错了,请告诉我是否有更好的方法。

hyrbngr7

hyrbngr71#

不管你是否需要把它真正保密,你都必须加密和模糊它,只是为了保护自己免受随意的黑客攻击。
另一方面,我不相信你能阻止一个有决心的黑客。越狱,gdb和流量嗅探器的组合将击败几乎任何你能想到的保护。在这样的保护上投入巨资很少是有意义的,所以你将不得不在浪费大量的时间和精力与让你的API密钥可被黑客攻击之间找到一个折中方案。
就我个人而言,我喜欢在应用程序的二进制文件中使用模糊形式的API密钥,因为你从App Store中得到的二进制文件是加密的。(但永远不会完全阻止)通过gdb访问您的应用程序。这将足以避免你的应用程序以解密的形式在互联网上四处传播。然后你将不得不使用HTTPS,因为嗅探流量是非常容易的,甚至需要越狱。
还有一个更重要的考虑。如果HTTPS是不可能的,并且你必须在HTTP请求中发送API密钥,那么忘记以上所有的考虑。如果密钥是以纯文本形式通过网络发送的,那么保护应用程序包中的密钥是没有意义的。

baubqpgj

baubqpgj2#

你可以使用Keychain Services来存储密钥,就像Mac存储密码一样-不是100%确定,但我认为它也会加密密码,并将它们保存在安全的沙箱中,以防其他窥探者(当然,在越狱的iPhone上,使用Costique提到的正确工具进行沙箱是没有意义的)
无论哪种方式都值得一看:
http://developer.apple.com/library/ios/#documentation/Security/Conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html
但是一定要使用HTTPS,否则任何人都可以毫不费力地嗅探它。

相关问题