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

sam*_*ami 3 php iphone api ios4

我正在创建一个需要连接到基于PHP的网站的iPhone应用程序.iPhone应用程序将检索并添加记录.我猜测网站和iPhone应用程序之间的通信应该由API密钥控制.iPhone应用程序提供它和网站检查.

我猜我必须在iPhone应用程序中存储该API密钥,对吧?所以我的问题; 将API密钥存储在iPhone应用程序中有风险吗?有人不能以某种方式访问​​我的API密钥并冒充iPhone应用程序从而获得对该网站的访问权限吗?或者这很难吗?如果我以错误的方式思考它,请告诉我是否有更好的方法.

Cos*_*que 10

无论你是否需要保密,你都必须加密和混淆它,只是为了保护自己免受偶然的黑客攻击.

另一方面,我不相信你能阻止坚定的黑客.越狱,gdb和交通嗅探器的组合几乎可以击败你能想到的任何保护.大力投资这种保护很少有意义,所以你必须在浪费大量时间和精力以及让你的API密钥破解之间找到折衷方案.

就个人而言,我喜欢在应用程序二进制文件中以混淆的形式使用API​​密钥的想法,因为从App Store获取的二进制文件是加密的.使用PT_DENY_ATTACH进行一些小的ptrace()hackery可能会进一步复杂化(但绝不会完全阻止)通过gdb访问您的应用程序.有可能,这足以避免您的应用程序以解密形式在互联网上浮动.然后你将不得不使用HTTPS只是因为嗅探流量非常容易,甚至不需要越狱.

更重要的考虑因素.如果HTTPS不可能,您必须在HTTP请求中发送API密钥,请忘记以上所有内容.如果它是通过网络以纯文本形式发送的,那么保护应用程序包中的密钥是没有意义的.