【发布时间】:2014-03-13 01:05:57
【问题描述】:
亚马逊有一个适用于 iOS 的 AWS 开发工具包以及 several sample apps。在他们的示例中,他们将 API 凭据放在 Constants.h 文件中:
// Constants used to represent your AWS Credentials.
#define ACCESS_KEY_ID @"CHANGE ME"
#define SECRET_KEY @"CHANGE ME"
我担心这些可以被一个坚定的黑客提取。有什么方法可以安全地在应用中包含 API 密钥?
我看到的一个选项是包含我自己的服务器作为中间人:应用程序与我的服务器通信,我的服务器与 S3 通信。我可以看到这样做的价值,但仍然存在问题:我是否允许应用程序在我的服务器上进行 API 调用而无需任何身份验证?在应用程序中包含我自己的 API 密钥与包含 AWS API 密钥的问题相同。
【问题讨论】:
-
如果它们存储在应用程序中(尤其是明文),则可以检索它们。您的应用程序能否在首次运行时检索密钥(使用 https),然后使用
KeychainItemWrapper存储它。如果是这样,您还应该确保为访问钥匙串设置了适当的应用安全级别。 -
这听起来像是个好主意。我什至可以想办法强制它在一周后过期,以防我需要更改为一组不同的凭据。
标签: ios amazon-web-services amazon-s3