作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
爱 git。热爱 git-crypt。
曾几何时,有一个使用 git-crypt 保护的存储库和一组在该存储库上工作的编码人员。不知何故,让我们怪罪外星人,一个文件以未加密的形式提交。
错误被及早发现并且没有造成伤害,但这引出了我的问题:
在您控制服务器(因此不包括 github)的半集中式设置(gitlab,一个受信任的 repo...)中,您使用什么保护(如果有的话)以确保 secret 文件不会以未加密的方式提交形式?
最佳答案
正如您在 git-crypt issue 104 中看到的那样, 尝试解密实际上未加密的文件时会出现警告:
git-crypt: Warning: file not encrypted
来自 smudge() function读取文件的第一个字符:
// Read the header to get the nonce and make sure it's actually encrypted
unsigned char header[10 + Aes_ctr_decryptor::NONCE_LEN];
std::cin.read(reinterpret_cast<char*>(header), sizeof(header));
if (std::cin.gcount() != sizeof(header) || std::memcmp(header, "\0GITCRYPT\0", 10) != 0) {
这意味着你可以写一个 pre-receive hook which will unpack the pushed files并阅读第一个 NONCE (12) characters检查文件是否以 "\0GITCRYPT\0"
开头。
如果这些推送的文件之一不存在(并且是 .gitattributes
file 引用的文件之一),则返回 1:推送将被拒绝。
重点是:一个server-side hook (因为您控制服务器端)是执行策略的最可靠方法(例如,此处仅加密文件)
关于git-crypt 明文保护?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21610728/
我是一名优秀的程序员,十分优秀!