如何使API密钥不受源代码管理?

  • 栏目:星鸿科技 时间:2018-06-19

这个问答是每周发布的一系列帖子的一部分,这些帖子强调了技术爱好者遇到的常见问题,并由100多个问答站点组成的免费社区网络Stack Exchange的用户回答。威尔问:

我 m在一个网站上工作,允许用户使用Twitter、Google等的OAuth凭据登录。要做到这一点,我必须向这些不同的提供者注册,并获得一个超秘密的API密钥,我必须用针对身体各部分的保证来保护它。如果我的钥匙被撬了,那部分就被撬了。

API密钥必须与我的源一起传输,因为它在运行时用于执行身份验证请求。在我的情况下,密钥必须存在于应用程序中的配置文件中或代码本身中。当我从一台机器上构建和发布时,这不是问题。然而,当我们把源代码管理放入混合中时,事情变得更加复杂。

由于我是一个廉价的混蛋,我更喜欢使用免费的源代码管理服务,比如云中的TFS或GitHub。这给我留下了一个小小的难题:

当我的API键在我的代码中并且我的代码在公共存储库中可用时,我如何保持我的身体完整?

我可以想出很多方法来处理这个问题,但是没有一个方法是令人满意的。

我可以从代码中删除所有私有信息,并在部署后重新编辑。这将是一个非常痛苦的实现(我将不详述许多方法),并且不是一个选项。我可以加密它。但由于我必须解密,任何有消息来源的人都可以知道如何解密。毫无意义。我可以支付私人源代码管理的费用。哈哈,花钱?拜托。我可以使用语言功能将敏感信息与我的其他源隔离开来,从而使它不受源代码管理。这就是我现在正在做的事情,但是很容易被错误地签入秘密文件搞砸。我真的在寻找一种有保证的方式来确保我不与世界分享我的隐私( snapchat除外),这种方式在开发、调试和部署过程中能够顺利工作,并且也是万无一失的。这是完全不现实的。那么我实际上能做些什么呢?

请参阅此处的原始问题。rescuePhilipp答案的

配置文件( 41票) :不要将秘密信息放在代码中。将它放入一个配置文件中,该文件在启动时由代码读取。配置文件不应置于版本控制之下,除非它们是出厂默认设置,然后它们不应有任何私有信息。

请参阅问题版本控制和个人配置文件了解如何做好这项工作。

让我们计算一下waysLazy Badger的答案( 13票) :

纯git way . gitignore包含的私有数据文件使用本地分支,其中您使用数据替换模板使用涂抹/清除过滤器,其中(本地)过滤器脚本执行双向替换模板数据mercurial wayMQ - patch ( es ),它在虚拟代码之上使用特殊设计的关键字替换模板(更改集是公共的,修补程序是私有的)关键字扩展(仅在您的工作目录中扩展) SCM不可知的方式将关键字替换为构建/部署过程的一部分您的配置文件如下:

PRIVATE . KEY = # { systemEnvironment [ PRIVATE _ KEY ] }

这是我们处理这些情况的方式,代码中没有任何内容。它与不同的属性文件和配置文件结合使用非常好。我们对不同的环境使用不同的属性文件。在我们的本地开发环境中,我们将开发密钥放在属性文件中,以简化本地设置:

private . KEY = A _ DEVELOPMENT _ LONG _ KEY

找到更多答案,或者将您自己的答案留在原始帖子中。在程序员处看到更多这样的问答,这是一个专业程序员对软件开发概念问题感兴趣的问答网站。如果您有自己的编程问题需要解决,请登录程序员并提出问题(免费)。

更多阅读

你手机的瑞士刀

星鸿科技 07-09
二进制(巧妙的命名方式!)是一个多工具,可以为您的手机提供强大的功能。它由两部分组成一个整体。每个部分都有两个端口。总而言之,二进制的阴......
查看全文

不,我不会安装你的应用程序,也不会订阅你的时事通讯

星鸿科技 06-19
互联网最近增加了路障和死胡同的数量:强制性的电子邮件订阅表格、Facebook页面likeprompless和伪装成信息的页面,只不过是充满广告的页面。遇到一个强...
查看全文

网络评论系统的秘密弱点暴露了煽动仇恨的政客

星鸿科技 06-19
据报道,调查记者利用第三方网站评论服务中的一个加密弱点,揭露那些在右翼博客上留下攻击性言论的政客和其他瑞典公众人物。至少从2009年开始,...
查看全文
返回全部新闻

Copyright © 2017 星鸿娱乐平台 版权所有