前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用Git-Secrets防止将敏感信息意外上传至Git库

如何使用Git-Secrets防止将敏感信息意外上传至Git库

作者头像
FB客服
发布2024-04-17 12:53:57
700
发布2024-04-17 12:53:57
举报
文章被收录于专栏:FreeBufFreeBuf
关于 Git-Secrets

Git-secrets是一款功能强大的开发安全工具,该工具可以防止开发人员意外将密码和其他敏感信息上传到Git库中。

Git-secrets首先会扫描提交的代码和说明,当与用户预先配置的正则表达式模式匹配时,便会阻止此次提交。该工具的优势在于可以集成到CI/CD管道中以实时监控提交信息,但不足之处在于,该工具主要基于正则表达式实现其检测功能,因此可能会有一定程度的误报。

工具安装

广大研究人员可以使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone https://github.com/awslabs/git-secrets.git

然后切换到项目目录中,根据对应的操作系统执行不同的安装命令:

代码语言:javascript
复制
cd git-secrets

*nix(Linux/macOS):

代码语言:javascript
复制
make install

Windows:

代码语言:javascript
复制
PS > ./install.ps

Homebrew安装

代码语言:javascript
复制
brew install git-secrets

工具使用命令

代码语言:javascript
复制
git secrets --scan [-r|--recursive] [--cached] [--no-index] [--untracked] [<files>...]

git secrets --scan-history

git secrets --install [-f|--force] [<target-directory>]

git secrets --list [--global]

git secrets --add [-a|--allowed] [-l|--literal] [--global] <pattern>

git secrets --add-provider [--global] <command> [arguments...]

git secrets --register-aws [--global]

git secrets --aws-provider [<credentials-file>]

--scan命令

扫描代码库中所有文件:

代码语言:javascript
复制
git secrets --scan

扫描单个文件:

代码语言:javascript
复制
git secrets --scan /path/to/file

递归扫描目录:

代码语言:javascript
复制
git secrets --scan -r /path/to/directory

扫描多个文件:

代码语言:javascript
复制
git secrets --scan /path/to/file /path/to/other/file

全局扫描:

代码语言:javascript
复制
git secrets --scan /path/to/directory/*

从stdin扫描:

代码语言:javascript
复制
echo 'hello!' | git secrets --scan -

--add命令

向当前代码库添加禁止的正则模式:

代码语言:javascript
复制
git secrets --add '[A-Z0-9]{20}'

向全局git配置添加禁止的正则模式:

代码语言:javascript
复制
git secrets --add --global '[A-Z0-9]{20}'

添加一个逐字扫描的字符串(+字符会被转义):

代码语言:javascript
复制
git secrets --add --literal 'foo+bar'

添加允许的正则模式:

代码语言:javascript
复制
git secrets --add -a 'allowed pattern'

工具使用样例

假设我们给定下列主题的文本信息(存储在/tmp/example中):

代码语言:javascript
复制
This is a test!
password=ex@mplepassword
password=******
More test...

并注册以下正则检测模式:

代码语言:javascript
复制
git secrets --add 'password\s*=\s*.+'
git secrets --add --allowed --literal 'ex@mplepassword'
(向右滑动,查看更多)

运行下列命令:

代码语言:javascript
复制
git secrets --scan /tmp/example

执行后工具会输出下列错误信息:

代码语言:javascript
复制
/tmp/example:3:password=******

[ERROR] Matched prohibited pattern

Possible mitigations:

- Mark false positives as allowed using: git config --add secrets.allowed ...

- List your configured patterns: git config --get-all secrets.patterns

- List your configured allowed patterns: git config --get-all secrets.allowed

- Use --no-verify if this is a one-time false positive
(向右滑动,查看更多)

上述正则表达式模式“password\s*=\s*.+”将匹配下列内容:

代码语言:javascript
复制
/tmp/example:2:password=ex@mplepassword
/tmp/example:3:password=******

不过,第一行password会被忽略,因为它匹配第一个允许通过的正则表达式“'ex@mplepassword'”。我们还可以使用下列命令将整个文件列入白名单中:

代码语言:javascript
复制
git secrets --add --allowed '/tmp/example:.*'

git secrets --scan /tmp/example && echo $?

# Outputs: 0

或者指定某个文件的指定行代码列入白名单:

代码语言:javascript
复制
git secrets --add --allowed '/tmp/example:3:.*'
git secrets --scan /tmp/example && echo $?
# Outputs: 0

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可证协议。

项目地址

Git-Secrets:https://github.com/awslabs/git-secrets

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Homebrew安装
  • --scan命令
  • --add命令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档