是否值得在iPhone应用程序中隐藏/混淆服务器连接?如果是这样的话?

时间:2010-05-10 14:49:04

标签: iphone encryption

如果我有一个连接到亚马逊S3服务的应用程序,是否值得花时间隐藏/混淆连接字符串和API密钥?我猜大多数黑客都不会那么在意,但如果有人发现这些信息并且能够将数据上传到我的账户,那将会非常痛苦!

例如,如果我存储用户名/密码(或Twitter / Facebook API密钥和密码),则可以使用“字符串”轻松找到这些密码。黑客可以看到功能,抓住秘密并将其用于恶意目的。我见过人们建议使用简单的Rot13,或者在app二进制文件中向后存储字符串或类似的东西。这些有用吗?

有没有人这样做或有任何想法/模式/代码要分享?

-Dan

3 个答案:

答案 0 :(得分:2)

您可以在完全控制的网络服务器中隐藏您的秘密,然后让此服务器将查询中继到亚马逊。然后,您可以使用您喜欢的任何加密/验证方法,因为您不依赖于亚马逊支持的内容。

一旦您验证了请求来自您自己的应用程序,您就会重写包含您的秘密的查询,然后将其转发给Amazon。亚马逊的结果可以直接传回给应用程序。

在php中,这可以使用类似于此片段的内容(不显示您的网址重写)来完成:

$fp = fopen($amazon_url,'r',false);
fpassthru($fp);
fclose($fp);

答案 1 :(得分:0)

你真的不需要隐藏它们......你应该做的是有一个额外的密钥,比如一个秘密,一个是隐藏的,只存在于调用的签名中(可以是MD5哈希或sha (或者其他))如果没有那个秘密密钥,人们将无法拨打电话,因为服务器和罪犯创建的签名不会匹配,因为他们不知道使用的密钥......

答案 2 :(得分:0)

  

我猜大多数黑客都不会   非常关心

只需要一个无聊的人。

  

有没有人这样做或有任何   想法/模式/代码分享?

这就是SSL的用途。您可以加密所有传输或仅加密登录过程(这将返回会话ID,该会话ID可用于会话期间的后续请求)。