如果我有一个连接到亚马逊S3服务的应用程序,是否值得我花时间隐藏/混淆连接字符串和API密钥?我猜大多数黑客都不会太在意,但如果有人发现了这些信息,并能够将数据上传到我的账户上,那将是经济上的痛苦!
例如,如果我存储用户名/密码(或Twitter/Facebook API密钥和密码),使用“字符串”可以很容易地找到它们。黑客可以看到功能,窃取秘密,并将其用于邪恶的目的。我见过有人建议使用简单的Rot13,或者将字符串反向存储在应用程序二进制文件中。这些有用吗?
有没有人这样做了,或者有什么想法/模式/代码可以分享?
-dan
发布于 2010-05-10 15:40:52
您可以将您的秘密隐藏在您完全控制的the服务器中,然后让此服务器将查询转发给Amazon。然后,您可以使用您喜欢的任何加密/验证方法,因为您不依赖于Amazon支持的内容。
一旦您验证了请求来自您自己的应用程序,然后重写包含您的秘密的查询,然后将其转发到Amazon。然后,来自Amazon的结果可以直接传递回应用程序。
例如,在php中,这可以使用类似下面的代码片段来完成(不显示url重写):
$fp = fopen($amazon_url,'r',false);
fpassthru($fp);
fclose($fp);
发布于 2010-05-10 14:57:42
你真的不需要隐藏密钥你应该做的是有一个额外的密钥,例如一个秘密,这个密钥是隐藏的,只存在于调用的签名中(可以是MD5 them...what或sha (或其他)),如果没有这个密钥,人们将无法进行呼叫,因为服务器创建的签名和攻击者创建的签名不会匹配,因为他们不知道使用的密钥……
发布于 2010-05-10 15:05:16
我猜大多数黑客都不会太在意
这只需要一个厌倦了的人。
有没有人这样做过,或者有什么想法/模式/代码可以分享?
这就是SSL的用途。您可以对所有传输进行加密,也可以只对登录过程进行加密(这将返回一个会话id,可用于会话期间的后续请求)。
https://stackoverflow.com/questions/2803581
复制相似问题