社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

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

FreeBuf • 11 月前 • 248 次点击  


关于 Git-Secrets


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



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

工具安装

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

git clone https://github.com/awslabs/git-secrets.git

(向右滑动,查看更多)


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

cd git-secrets

*nix(Linux/macOS)

make install

Windows:

PS > ./install.ps

Homebrew安装

brew install git-secrets

工具使用命令


git secrets --scan [-r|--recursive] 


    
[--cached] [--no-index] [--untracked] [...]
git secrets --scan-history
git secrets --install [-f|--force] []
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 []

(向右滑动,查看更多


--scan命令


扫描代码库中所有文件:

git secrets --scan

扫描单个文件:

git secrets --scan /path/to/file

递归扫描目录:

git secrets --scan -r /path/to/directory

扫描多个文件:

git secrets --scan /path/to/file /path/to/other/file

(向右滑动,查看更多


全局扫描:

git secrets --scan /path/to/directory/*

从stdin扫描:

echo 'hello!' | git secrets --scan -

--add命令


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

git secrets --add '[A-Z0-9]{20}'

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

git secrets --add --global '[A-Z0-9]{20}'

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

git secrets --add --literal 'foo+bar'

添加允许的正则模式:

git secrets --add -a 'allowed pattern'

工具使用样例


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

This is a test!password=ex@mplepasswordpassword=******More test...

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

git secrets --add 'password\s*=\s*.+'git secrets --add --allowed --literal 'ex@mplepassword'

(向右滑动,查看更多


运行下列命令:

git secrets --scan /tmp/example

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

/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*.+”将匹配下列内容:

/tmp/example:2:password=ex@mplepassword/tmp/example:3:password=******


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

git secrets --add --allowed '/tmp/example:.*'
git secrets --scan /tmp/example && echo $?
# Outputs: 0

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

git secrets --add --allowed '/tmp/example:3:.*'git secrets --scan /tmp/example && echo $?# Outputs: 0

许可证协议


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


项目地址


Git-Secretshttps://github.com/awslabs/git-secrets


FreeBuf粉丝交流群招新啦!
在这里,拓宽网安边界
甲方安全建设干货;
乙方最新技术理念;
全球最新的网络安全资讯;
群内不定期开启各种抽奖活动;
FreeBuf盲盒、大象公仔......
扫码添加小蜜蜂微信回复“加群”,申请加入群聊



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/169128
 
248 次点击