Amazon擁有適用於iOS的AWS開發工具包,以及several sample apps。在他們的樣本,他們把API證書在Constants.h
文件:iOS:在代碼中是否包含API密鑰的安全方法?
// 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將其存儲。如果是這樣,您還應該確保您還爲訪問鑰匙串設置適當的應用安全級別。 –
這聽起來像一個好主意。我甚至可以制定一些措施強制它在一週後過期,以防我需要更換一組不同的憑證。 –