1
Yvette 2017-09-02 13:47:31 +08:00 via iPhone
看 commit 记录
|
3
Yvette 2017-09-02 14:03:44 +08:00 via iPhone 1
@nikoo 你这反问得我有点愣了,既然都能看到官方的 commit 记录那还要看 fork 的干啥…不过话说回来,每个 commit 的哈希值跟前一个 commit 以及提交时间都有关系,所以不可能被篡改的,确保一致。
|
4
FrankFang128 2017-09-02 14:05:17 +08:00
check sum?
|
5
dong3580 2017-09-02 14:11:24 +08:00 via Android 1
|
6
nikoo OP @Yvette 谢谢!比如这个 SSR fork 项目: https://github.com/ssrbackup/shadowsocksr
可以看到他的 commits 记录 https://github.com/ssrbackup/shadowsocksr/commits/manyuser 都是作者本人提交的,这个提交者是无法篡改的把? 是不是可以说明这个 fork 是与官方一致的? |
7
nikoo OP @dong3580 commits 记录里面的作者信息例如 "breakwa11 committed on Jul 27" 可以被修改?
|
9
momocraft 2017-09-02 14:20:22 +08:00 1
我在本地简单实验了一下:
1. 建立 repo A,commit 某个文件 2. 把 repo A 中那个文件对应的 blob 换成另外内容 3. git clone A B 能正常结束,B 中的这个文件会是改过的 blob 的内容。 4. 此时在 A 和 B 中运行 git fsck 都会说 `error: sha1 mismatch for .git/objects/8f/150a442a97cd4ad6320768029b7a1e13a42ca2 (expected 8f150a442a97cd4ad6320768029b7a1e13a42ca2) `。但 fsck 不会自动运行。 因此即使一个 commit 和内部所有 blob 的 sha1 都和原 repo 一样,仍然有可能内容是被篡改过的。这样的篡改可以用 git fsck 检查出来。不知道 github 对这种事情有没有预防。 |
10
nikoo OP |
12
momocraft 2017-09-02 14:25:26 +08:00
#9 的补充: 最后一段 "内部所有 blob 的 sha1" 是指那个 blob 路径中的 sha1,不是内容的。
|
13
ProjectAmber 2017-09-02 14:25:36 +08:00 2
无法确保安全,因为 git 的一切都可以伪造。唯一能保证 commit 来自特定开发者的是其主动添加的签名。
https://github.com/blog/2144-gpg-signature-verification |
14
nbndco 2017-09-02 17:24:36 +08:00
commit 是可以篡改的,在 GitHub 上所有没显示 verified 的都是可能被改过的。
|
15
Yvette 2017-09-02 23:11:11 +08:00
学习了,以前没听说过有 Verified 的 commit
|