如何防止密码被硬编码到代码中?Yelp开源了自己的解决方案安全
Java
如何防止密码被硬编码到代码中?Yelp开源了自己的解决方案安全
Hadoop
如何防止密码被硬编码到代码中?Yelp开源了自己的解决方案安全
框架
如何防止密码被硬编码到代码中?Yelp开源了自己的解决方案安全
培训
如何防止密码被硬编码到代码中?Yelp开源了自己的解决方案安全
开源

近日,美国的「大众点评」公司 Yelp 宣布正式开源其密码检测框架,该框架用于防止代码中的密码等相关敏感信息被提交到代码库中,它号称可以在保证安全性的同时不会给开发者的生产力带来任何影响。


GitHub 地址:https://github.com/Yelp/detect-secrets


众所周知,对于一个优秀的程序员来说,他是一定不能把密码或者密钥等敏感信息直接硬编码到程序代码中的,因为这极有可能引起相关的安全问题(也就意味着任何一个代码贡献者都可以获取这些密码,并使用它们访问相关系统)。


对于如何解决这类问题,以往的经验就是规则,每一个新入职或者新入行的程序员都被教育说,『千万不要在代码中泄露密码』,但即使是这样也无法保证不会发生意外,俗话说得好,人或者流程总是不可靠,也不可控的。


简单来说,要系统解决这个问题,除了流程和必要的培训之外,还有其他事情可以做,总结来说,有两个:

在代码被提交到代码库时设置 check 机制,如果发现有密码信息立即阻止提交。

如果密码被提交代码库中,也可以很快被发现,并在密码泄露之前对其进行修补。


为了不重复发明轮子,Yelp 团队先是花了很多时间调研已有的开源项目,比如 truffleHog、git-rob、git-secrets、Repo Supervisor。但他们发现,这些项目根本无法满足他们的要求。他们希望的解决方案能够:


1. 支持白名单

Yelp 现有的代码库中可能已经包含了密码,不过这不能成为影响服务部署的阻碍。他们要保证在某个时间点之后的代码提交中不包含密码,随后,在部署服务之前检查其中包含的所有密码,然后进行回溯性回滚,并使用更好的存储方式来保存密码。


2. 与软件开发生命周期集成

较佳的解决方案需要与开发人员的工作流程密切配合,因为密码管理是一个持续的过程,不能通过定期审核来强制执行。因此,解决方案的速度要快,不扫描不必要的文件。


3. 与已有的预提交框架兼容

Yelp 开发团队在提交代码之前,使用预提交框架来运行静态代码断言检查。因此,较佳的解决方案需要基于这个框架,并与现有的钩子保持向后兼容性。


4. 轻量级和模块化

方便定制化,并用在大型的生态系统中。


5. 编程语言无关性

该解决方案可以应用在所有的代码库上,不管是什么语言的代码库,而且支持不同的客户端(如 python、Puppet、javascriptphp、Java 等)。


Yelp 的解决方案使用了客户端预防和服务器端检测的办法,确保密码不会被意外提交到代码库中。客户端和服务器端都通过同一个密码检测引擎,所以当检测引擎发生变更时,两端都可以感知到。


如何防止密码被硬编码到代码中?Yelp开源了自己的解决方案安全

为了防止提交密码,Yelp 使用现有的预提交框架来扫描被提交代码中可能存在的疑似密码的东西。扫描规则已经在检测引擎中配置好了。考虑到可能有人没有安装预提交钩子,所以持续集成管道中也集成了扫描流程。


有些密码可能不在持续集成管道中,并且开发人员也没有安装预提交框架,对于这些情况,Yelp 使用检测引擎定期扫描提交的代码。因为扫描是基于字符串的,所以不需要去解析抽象语法树,在保持语言无关性的同时,速度更快,也更灵活。因此,他们可以更频繁地扫描所有代码库,在不需要使用太多计算能力的情况下加快响应速度。


Yelp 的扫描使用了正则规则,可以检测出如下几种密码:

API 秘钥

AWS 秘钥

OAuth 客户端秘钥

SSH 私钥

其他高熵数字符串(比如使用 Shannon Entropy 计算的字符串)


需要注意的是,这个框架并非万能的解决方案。不过,相比“教育”开发者而言,这个框架可以帮助企业更方便高效地实现密码管理。


欢迎加入本站公开兴趣群

软件开发技术群

兴趣范围包括:Java,C/C++,Python,PHP,Ruby,shell等各种语言开发经验交流,各种框架使用,外包项目机会,学习、培训、跳槽等交流

QQ群:204132433


Hadoop源代码研究群

兴趣范围包括:Hadoop源代码解读,改进,优化,分布式系统场景定制,与Hadoop有关的各种开源项目,总之就是玩转Hadoop

QQ群:204050420

tags: Yelp,代码,提交,框架,扫描,库中,开源,解决,检测,方案,客户端,秘钥,Hadoop
分页:12
转载请注明
本文标题:如何防止密码被硬编码到代码中?Yelp开源了自己的解决方案安全
本站链接:http://www.codesec.net/view/577305.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 大数据技术 | 评论(0) | 阅读(47)