cocoapods-keys, 用于存储每个开发人员环境和应用程序密钥的key-value 存储区

分享于 

7分钟阅读

GitHub

  繁體 雙語
A key value store for securely storing environment and application keys
  • 源代码名称:cocoapods-keys
  • 源代码网址:http://www.github.com/orta/cocoapods-keys
  • cocoapods-keys源代码文档
  • cocoapods-keys源代码下载
  • Git URL:
    git://www.github.com/orta/cocoapods-keys.git
    Git Clone代码到本地:
    git clone http://www.github.com/orta/cocoapods-keys
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/orta/cocoapods-keys
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    Build Status

    用于环境和应用程序密钥的key-value 存储。

    将生产密钥保留在开发人员手中的安全性实践。 cocoapods键使得每个用户配置设置安全地存储在开发人员的钥匙串中,而不是在应用程序源代码中。 它是一个插件,一旦安装将在每个 pod install 或者 pod update 上运行。

    要求

    需要 CocoaPods 0.36 +

    安装

    
    $ gem install cocoapods-keys
    
    
    
    

    工作原理

    密钥名称存储在 ~/.cocoapods/keys/ 中,并在 OS X 钥匙串中存储键值。 使用 pod install or,在运行或者 pod update 时,会创建一个 objective-c 类,这样就很难只删除的的内容,并提取密钥。 在运行时,键被分解以便在你的应用程序中使用。

    生成的objective-c 类存储在 Pods/CocoaPodsKeys 目录中,因此如果你检查 pod文件夹,只需将 Pods/CocoaPodsKeys 添加到 .gitignore 文件中。 cocoapods键支持Swift或者 objective-c 项目中的集成。

    用法

    我们可以使用CocoaPods中的新插件API来自动化大量繁琐的代码。 定义你想要在 Podfile中使用哪些键,键将检测还没有设置的键。 如果需要从目标 NAME 指定不同的项目 NAME,请使用键 :target 来指定它。

    plugin 'cocoapods-keys', {
     :project => "Eidolon",
     :keys => [
     "ArtsyAPIClientSecret",
     "ArtsyAPIClientKey",
     "HockeyProductionSecret",
     "HockeyBetaSecret",
     "MixpanelProductionAPIClientKey",
    . . .
     ]}

    然后运行 pod install 会提示你输入还没有设置的键,你可以确保每个人都有相同的设置。

    替代用法

    你可以通过运行以下命令在每个项目基础上保存密钥:

    
    $ pod keys set KEY VALUE
    
    
    
    

    你可以通过运行以下命令列出所有已知密钥:

     
    $ pod keys
    
    
    
     

    例如:

     $ cd MyApplication
     $ pod keys set"NetworkAPIToken""AH2ZMiraGQbyUd9GkNTNfWEdxlwXcmHciEOH" Saved NetworkAPIToken to MyApplication.
     $ pod keys set"AnalyticsToken""6TYKGVCn7sBSBFpwfSUCclzDoSBtEXw7" Saved AnalyticsToken to MyApplication.
     $ pod keys
     Keys for MyApplication
     ├ NetworkAPIToken - AH2ZMiraGQbyUd9GkNTNfWEdxlwXcmHciEOH
     └ AnalyticsToken - 6TYKGVCn7sBSBFpwfSUCclzDoSBtEXw7
     GIFs -/Users/orta/dev/mac/GIFs
     └ redditAPIToken & mixpanelAPIToken

    在下一个 pod install 或者 pod update 键将向Pods项目添加一个新的Keys 窗格之后,支持 static 库和框架。 注意:你必须在Podfile中包含用于 register的键,它应该可以工作。 这将从 Cocoa 代码向你的键提供一个 API。 例如上面的应用程序代码看起来像:

    #import"ORAppDelegate.h"#import<Keys/MyApplicationKeys.h>#import<ARAnalytics/ARAnalytics.h>@implementationORAppDelegate- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
     MyApplicationKeys *keys = [[MyApplicationKeys alloc] init];
     [ARAnalytics setupWithAnalytics:@{
     ARGoogleAnalyticsID : keys.analyticsToken;
     }];
    }@end

    有些文档也适用于在Swift项目中使用cocoapods键。

    其他命令

    cocoapods键有 3个其他命令:

    • pod keys get [key] [optional project] 它将把关键字的值输出到 STDOUT,这对于脚本。

    • pod keys rm [key] [optional project] 将从项目中移除密钥。

      如果包含通配符,它将删除与 Pattern 匹配的键。 比如: pod keys rm"G*og*" 在'g'中,所有的键都在中间,在中间有'og',在中间有任何。
      若要清除所有密钥,请运行 pod keys rm"*" 或者 pod keys rm --all

    • pod keys generate [optional project] 将生成模糊的objective-c 键类( 主要用于内部)。

    持续集成

    在你的word中混乱钥匙串很少是一个好主意,因这里键在查找钥匙串之前找到一个环境 var。 也可以在项目文件夹中创建 .env 文件。

    维护状态

    从艺术角度看CocoaPods键是有效的"已经完成"软件。 它已经完成了我们多年所需要的一切。 因此,我不建议提出请求新特性,只是因为我们不会自己构建它们。 我们一定会继续确保它能正常工作,但是我们在生产中使用它。

    安全性

    关键的安全性很困难,现在即使是大型应用也会得到他们的密钥漏洞。 这是由 Twitter 安全小组的安全小组的约翰亚当斯总结的。

    把它放在"你应该把钥匙储存在软件里"的上下文中,更合适。 许多公司都这么做,这不是一个好主意。

    当开发人员这样做时,它的他开发人员可以使用调试器和字符串搜索命令从运行的应用程序。 有许多关于如何这样做的谈话,但是让读者把这些作为一个练习来找到这些谈话。

    许多人相信在代码中混淆这些键会有帮助。 它通常不会因为你只运行一个调试器并找到完整的功能键。

    所以总的来说,存储键的理想方法是不存储键。 实际上,虽然大多数应用程序嵌入了密钥,但这也会给密钥添加一些基本的模糊。 一个很好的应用程序骇客可能会在几分钟内提取这个。

    谢谢

    这是由 @segiddins@ashfurrow 和@marcelofabri 提供的许多帮助。


    KEY  Store  envi  环境  keys  storing  
    相关文章