[安全]Git用户端敏感信息检查方案

这篇具有很好参考价值的文章主要介绍了[安全]Git用户端敏感信息检查方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Git仓库利用pre-commit在用户端检测敏感信息

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

Git作为代码管理工具,已经被广泛使用。在实际工作中,大部分开发人员都会将代码push到远程代码管理平台,实现协同开发,比如github、gitlab等。用户在代码中经常会使用到用户名/密码、ssh key、token、云access key等敏感信息。这些信息一旦被上传到远程代码管理平台,就意味着有较被泄漏的风险,后果不堪设想。因此,很多知名公司都会对代码管理平台严防死守,严格禁止用户上传敏感信息。用户一旦上传了敏感信息,就要付出很大的成本去治理。用户通常需要通过git reset 回滚版本或者git filter-repo重写仓库commit,然后再强制push到远程仓库清理敏感信息。这将对用户来说是非常糟糕的事情。
因此,用户最好在代码commit之前,通过git自带的pre-commit hook机制检查staged区中的代码,防止敏感信息被commit到本地仓库。

敏感信息检查

简介

介绍一下用到的两款工具:

  • pre-commit 官方地址: https://pre-commit.com/
  • gitleaks 官方地址 https://github.com/gitleaks/gitleaks

pre-commit
pre-commit 是一个开源的git hook管理框架,可以管理多种语言的git hooks。 pre-commit自带丰富的hooks库,不仅用于代码安全治理,多数开发人员也会用pre-commit提供的hooks检查代码语法、代码格式化等功能。
gitleaks
gitleaks 是gitlab推荐的一款开源的静态代码扫描工具(SAST),常用于git 仓库代码扫描和敏感信息防御。

安装

pre-commit是利用python开发的,安装很简单。例如在linux平台下可以通过pip安装:

pip install pre-commit
#执行pre-commit验证命令
pre-commit

更多安装方式,参见官方文档: https://pre-commit.com/#install

配置

pre-commit可以自动下载远程hooks代码、编译、执行。在使用pre-commit之前,需要您在仓库根目录下创建一个.pre-commit-config.yaml配置文件。
参考示例:

repos:
#第一个repo是gitleaks支持的pre-commit hooks仓库。本案例主要使用的hooks。
-   repo: https://github.com/gitleaks/gitleaks.git
    rev: v8.18.1
    hooks:
    -   id: gitleaks
#第二个repo地址是pre-commit自带的hooks插件。与敏感信息扫描无关,主要用于说明pre-commit可以管理丰富的hooks插件,大家可以自行研究。
-   repo: https://github.com/pre-commit/pre-commit.git
    rev: v4.5.0 
    hooks:
    -   id: check-added-large-files
        args: ['--maxkb=51200']

安装hooks

进入已配置.pre-commit-config.yaml的仓库,执行下面操作:

#1. 根据仓库.pre-commit-config.yaml 自动下载、安装hooks文件。
pre-commit install-hooks
#2. 安装pre-commit 到git hooks目录。
pre-commit install

以上命令,pre-commit将从gitleaks仓库自动下载代码,并执行“go install”安装gitleaks 二进制文件。除了golang,pre-commit还支持多种语言环境。

显示结果:
[安全]Git用户端敏感信息检查方案,Gitlab实践专栏,安全,git

验证

pre-commit安装完成以后,我们随意添加一些包含敏感信息的代码文件,验证pre-commit是否能够检查出敏感信息来。
比如: 复制 ~/.ssh/id_rsa文件到代码仓库。

显示结果:
[安全]Git用户端敏感信息检查方案,Gitlab实践专栏,安全,git

跳过hooks

如果您发现检查结果不符合预期,希望跳过某项检查,可使用SKIP环境变量指定跳过的hooks列表(逗号分隔)。

SKIP=gitleaks git commit -m "update"

显示结果
[安全]Git用户端敏感信息检查方案,Gitlab实践专栏,安全,git

自动安装

如果您不想每个仓库都执行一遍“pre-commit install”,Pre-commit提供了一个"init-templatedir"子命令,允许您安装pre-commit到git的系统初始化模版目录。您在执行git init/git clone的时候,pre-commit文件被自动copy到新仓库的“.git/hooks/”目录下。.git/hooks/目录下的pre-commit文件是pre-commit hooks的主程序,会按照仓库中的.pre-commit-config.yaml配置文件执行不同的hooks插件。
但您仍需要为每个仓库准备.pre-commit-config.yaml配置文件,并执行pre-commit install-hooks安装需要的hooks插件。
根据您的系统环境不同,Git的TemplateDir默认路径也不一样。您可以通过
git config --list --show-origin来查看git的home目录,Git的TemplateDir通常为home下的“templates”目录。例如: “/usr/share/git-core/templates”。

配置自动安装pre-commit,执行:

#pre-commit init-templatedir <git init的TemplateDir路径>
pre-commit init-templatedir /usr/share/git-core/templates

总结

Pre-commit还有很多玩法,暂时先介绍到这里。比如,如何开发一个hooks工具,感兴趣的朋友可以深入研究一下pre-commit。
gitleaks 是一个很不错的SAST工具,不仅可以全量扫描大批量的代码仓库,也可以基于某次扫描之后的新增代码。文章来源地址https://www.toymoban.com/news/detail-846644.html

到了这里,关于[安全]Git用户端敏感信息检查方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设备快线客户端软件V1.0用户手册

    1.前言 欢迎使用设备快线客户端软件产品。设备快线客户端软件简称DYClient,DYClient客户端是东用科技有限公司推出的一款用于远程维护的控制软件,主要为客户远程访问现场终端设备提供便捷的接入服务,并且通过DYClient客户端软件用户可以非常方便快捷的访问所有分布现场的

    2024年02月06日
    浏览(81)
  • uniapp - 微信小程序新版本发布之后用户端怎么更新?updateManager ?

    微信小程序在版本更新后,从上面标题栏进去,发现还是没有更新,存在缓存问题 这就要说到微信小程序更新机制 解决办法--微信提供的wx.getUpdateManager()(我的uniapp)uni.getUpdateManager(),链接:uni.getUpdateManager() | uni-app官网 1)定期检查发现版本更新 微信运行时,会定期检查最近使

    2024年02月06日
    浏览(57)
  • 微信小程序---- 外卖小程序查看实时地图路线(骑手端&用户端)【高德地图】

    前言:1. 在小程序中需要使用map组件,文档链接:https://developers.weixin.qq.com/miniprogram/dev/component/map.html 2.使用的是高德地图,所以需要引进相关的js,下载链接:https://lbs.amap.com/api/wx/download 3.去往高德官方申请需要用的key,操作链接:https://lbs.amap.com/api/wx/guide/create-project/get-key

    2024年02月16日
    浏览(52)
  • 网页版Java五子棋项目(一)websocket【服务器给用户端发信息】

    http不能实现消息推送 http的轮询(开销大) WebSocket 是从 HTML5 开始支持的一种网页端和服务端保持长连接的 消息推送机制. 理解消息推送: 传统的 web 程序, 都是属于 “一问一答” 的形式. 客户端给服务器发送了一个 HTTP 请求, 服务器给客户端返回一个 HTTP 响应. 这种情况下,

    2024年02月14日
    浏览(42)
  • MongoDB之用户与权限管理、备份与恢复管理以及客户端工具的使用

    MongoDB默认不使用权限认证方式启动,但是需要设置权限以保证数据安全。 MongoDB是没有默认管理员账号,所以要先添加管理员账号,并且MongoDB服务器需要在运行的时候开启验证模式 语法格式: 创建root用户,角色为root 在使用的数据库上创建普通用户 若需要连接Mongodb进行认

    2024年02月07日
    浏览(42)
  • 微信小程序错误error:用户绑定的手机号需要验证,请在客户端完成短信

    获取手机号能力,参考官方文档。 用户绑定的手机号需要验证,请在客户端完成短信 在微信开发者工具中点 预览 在手机上打开微信,扫一扫 预览二维码 。 在开发版小程序(扫码预览二维码打开的是开发版小程序)中,点击需要获取手机号的功能。此时,进入验证手机号的

    2024年02月08日
    浏览(195)
  • # Linux下用mailx发送邮件,邮件内容在用户端变成了以为.bin为扩展名的邮件附件的问题解决

    这种情况一般存在于将【某文件内容】作为【邮件内容】时发生,你指定的那个文件中包含了Linux终端控制字符,把这些控制字符删除即可恢复正常。 附件的文件名一般为.bin结尾,也可能是其他。 如果按这个原文发送邮件,则会变成以.bin结尾的邮件附件 删除文件中的控制字

    2024年02月16日
    浏览(44)
  • FPGA - AXI4_Lite(实现用户端与axi4_lite之间的交互逻辑)

    在之前的博客中对AXI4总线进行了介绍(FPGA-AXI4接口协议概述),在这篇博客中, 实现用户端与axi4_lite之间的交互逻辑。 对AXI4总线简单介绍(具体可见FPGA-AXI4接口协议概述) ①AXI4是ARM公司提出的是一种高性能、高带宽、低延迟的片内总线 ②主要描述了主设备和从设备之间的

    2024年04月11日
    浏览(39)
  • 信息服务上线渗透检测网络安全检查报告和解决方案4(网站风险等级评定标准、漏洞危害分级标准、漏洞安全建议)

    信息服务上线渗透检测网络安全检查报告和解决方案3(系统漏洞扫描、相对路径覆盖RPO漏洞、nginx漏洞修复) 信息服务上线渗透检测网络安全检查报告和解决方案2(安装文件信息泄漏、管理路径泄漏、XSS漏洞、弱口令、逻辑漏洞、终极上传漏洞升级) 信息服务上线渗透检测网络安

    2024年02月12日
    浏览(43)
  • 【web渗透思路】敏感信息泄露(网站+用户+服务器)

       博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edusrc高白帽,vulfocus、攻防世界等平台排名100+、高校漏洞证书、cnvd原创漏洞证书等。 擅长:

    2023年04月18日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包