我有一堆API密钥和秘密(Stripe,Cloudinary等),目前我的应用程序中已对其进行了硬编码。存放它们的正确位置在哪里?它们应该在服务器中吗?我只是将服务器URL存储在我的最后(如果密钥更改,应用程序将继续工作)?
例如,我在我的app委托文件中有这个:
func configureStripe(){
STPPaymentConfiguration.sharedConfiguration().publishableKey = "pk_test_1234rtyhudjjfjjs"
STPPaymentConfiguration.sharedConfiguration().appleMerchantIdentifier = "merchant.com.myapp"
}
答案 0 :(得分:1)
没有最好的办法。这取决于很多事情。看看这个答案 - https://stackoverflow.com/a/14865695/1760199,并选择最方便的方式。
答案 1 :(得分:1)
有很多存储密钥的工具。
如果是个人项目,我通常会选择xccconfig
,而忽略git中的该文件,但是对于团队来说,这可能很难。
答案 2 :(得分:0)
答案 3 :(得分:0)
就Stripe而言,没有什么大不了的,因为Stripe正是出于这一考虑而设计的,因此他们承担PCI合规性方面的财务责任。他们具有更复杂的方法来验证用户身份并限制访问。
答案 4 :(得分:0)
首先,您需要记住,攻击者可能会获取与应用程序一起交付的每段代码。任何一种混淆都无法保护它,只会使攻击更加昂贵和耗时。
因此,您不应在源代码中保留任何敏感密钥或秘密。您需要考虑用于存储机密的服务器端解决方案。服务器端解决方案将介于您的应用和您实际上要调用的API之间。
答案 5 :(得分:-2)
最佳做法是在某个类或控制器上将您的字符串api url放在平面文本中,而不要输入信息。
我使用帮助类:
class ApiUrl
{
static var api = "www.api.com/api/"
}
let api = ApiUrl.api