如何在iOS上保留凭据来源控制

时间:2014-03-26 19:59:28

标签: ios security version-control credentials

我的iOS应用程序需要凭据才能连接到多个API。因为该项目是开源的,所以我不想将凭证检查到源代码库(git)。

最终,我希望能够在我的应用程序代码中执行类似的操作:

googleMapsApiKey = [AppCredentials googleMapsApiKey];

使用不在源代码管理下的配置文件初始化AppCredentials

过去,我一直在使用像Python或Ruby这样的动态语言,并且到达solutions like this one以保证凭证不受源代码控制。方法是这样的:

  1. 有一个公共API,在运行时解析包含所有凭据的文件。
  2. 包含所有密码的配置文件是在带外传输的(例如,在电子邮件中加密)。
  3. 分发示例凭据文件以作为其他开发人员的模板
  4. 但是,我不知道如何在iOS上应用此方法。我不能只在源根目录中删除'passwords.json'文件,并在应用程序初始化时解析它。我无法在应用包中添加内容,因为捆绑包也会被检入版本控制。

    请注意,不会阻止恶意用户从已编译的应用中提取凭据。我现在不打算解决这个问题。有了这个问题,我只想保留凭证的源代码。

1 个答案:

答案 0 :(得分:1)

这实际上是一个SVC问题,从这个角度来看,您只想将配置添加到单个文件中,并让SVC忽略该文件。

通常,我会在'read me'文件中添加在项目有效之前需要在指定位置创建此配置文件。

然后,将文件添加到项目中并为其指定目标成员资格(因此在构建时将其复制到包中)。现在,在代码中,您可以使用类似:

[[NSBundle mainBundle] pathForResource:@"accountConfig" ofType:@"plist"];

获取要加载的文件的路径。