真是爱死人了。可爱的git-crypt。
很久很久以前,有一个用git-crypt保护的repo,并且有一群程序员在这个repo上工作。不知何故,让我们归咎于外星人,一个文件是以未加密的形式提交的。
这个错误很早就被发现了,没有造成任何危害,但这引出了我的问题:
在半集中式设置中(gitlab,一个受信任的存储库...)在您控制服务器的位置(因此不包括github),您会使用什么保护措施(如果有)来确保机密文件不会以未加密的形式提交?
发布于 2017-07-22 14:07:25
正如您在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 (因为您控制服务器端)是执行策略的最可靠方式(就像这里,仅加密文件)。
https://stackoverflow.com/questions/21610728
复制相似问题