亚马逊拥有适用于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 key 吗?
我看到的一个选择是将自己的服务器作为中间设备:该应用程序与我的服务器对话,我的服务器与S3对话。我可以看到这样做的值(value),但是仍然有一个问题:我是否允许该应用在服务器上进行API调用而无需进行任何身份验证?在应用程序中包含我自己的API key 与包含AWS API key 存在相同的问题。
最佳答案
有两个凭据管理选项可帮助您避免在应用程序中嵌入凭据。第一个是Web Identity Federation,它允许用户使用Facebook,Google或使用Amazon登录登录到您的应用程序。另一种选择是使用 token 自动售货机,这是一个服务器组件,可将临时凭据分发到您的应用程序。
在AWS移动开发博客上有一个高层次的概述以及相关文档和代码示例的指针:http://mobile.awsblog.com/post/Tx3UKF4SV4V0LV3/Announcing-Web-Identity-Federation
关于iOS:是否有安全的方法在代码中包含API key ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21766343/