出于安全原因,我希望默认情况下禁用git钩子。
更具体地说,当我在我的(Kubuntu) OS帐户上的任何git存储库中运行git命令时,除非以某种方式指定,否则不应该执行任何git挂钩。
在Vagrant或Docker中运行我的所有代码,我想要避免的攻击是VM中的恶意代码写入git钩子目录,从而使其自身进入主机。默认情况下禁用git钩子是防止这种情况的一条防线。
我正在寻找一个不需要每个存储库工作和状态的解决方案。在我的搜索中,我遇到了this script,它打破了这两个要求。
理想情况下,有一个简单的解决方案,比如把它放在.bash_aliases中
alias git='/usr/bin/git --no-hooks'发布于 2019-06-04 09:59:04
在$HOME/.gitconfig中设置core.hooksPath似乎很适合我
[core]
hooksPath = $SOME_DIR_WITHOUT_HOOKS要为特定存储库启用挂钩,您可能可以在$REPO/.git/config中将其重置
[core]
hooksPath = $GIT_DIR/hooks发布于 2018-01-25 01:17:21
钩子并不是拥有.git目录写权限的攻击者攻击.git目录用户的唯一方式,例如,选项diff.external可以被设置为执行任何操作,谁来跟踪所有新的Git功能?
如果您的开发环境在其中查找配置文件,或者如果它有一些在本地执行的脚本,那么即使让攻击者拥有对存储库的写访问权限也可能是不好的。
保护.git仍然是一个好主意,我提出了以下解决方案:
.git在虚拟机中为只读。.git目录放在与虚拟机共享的工作目录之外。--git-dir标志或GIT_DIR环境变量控制Git查找.git目录的位置。的缺点是,如果需要,.git目录不会与虚拟机共享,并且在使用每个不同的存储库之前,需要设置命令行标志或环境变量
https://stackoverflow.com/questions/48135161
复制相似问题