精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

為什么 GitHub 提交沒你想得那么私密

譯文 精選
數據庫 其他數據庫
在本文中,我將逐步闡述這種情況是如何發生的,演示已刪除或私有的提交在哪些情況下仍然可以被訪問,并解釋這對注重安全的團隊、開源維護者以及錯誤應用 GitHub hygiene的開發者意味著什么。

譯者 | 涂承燁

審校 | 重樓

開發者中普遍存在一種誤解,認為一旦刪除了提交(commit),它就永遠消失了。你可以強制推送(force-push)來重寫歷史,或者刪除包含敏感信息的分支(branch),并以為它已被安全擦除。但 GitHub Git 本身并不樣工作。

事實上,GitHub 能夠以不顯而易見的方式保留并暴露“已刪除”的提交。在某些條件下,你認為已被移除的提交仍然可以被公開訪問。這造成了一種隱私假象—開發者感覺安全了,但實際上,敏感信息的痕跡可能仍然可以訪問。

在本文中,我將逐步闡述這種情況是如何發生的,演示已刪除或私有的提交在哪些情況下仍然可以被訪問,并解釋這對注重安全的團隊、開源維護者以及錯誤應用 GitHub hygiene的開發者意味著什么。

Git 如何處理“已刪除”的提交

Git 是一個分布式版本控制系統,用于跟蹤文件的版本。這意味著開發者可以獨立擁有自己的分支版本。

其核心在于,Git 是一個內容可尋址的數據庫。提交(commits)、樹(trees)和 blob 對象(blobs)根據它們的 SHA-1 SHA-256 哈希值存儲。Git 并非真正“刪除”內容—它只是取消對它們的引用。

讓我們看看這在實踐中是什么樣子:

首先,初始化一個新的 Git 倉庫并添加一個 README.md 文件。

README.md 添加一些更改并再次提交。

此時,我們有兩個提交。你可以用 git log 查看它們:

HEAD 是一個位于倉庫內 .git/HEAD 文件中的指針。這個文件通常包含對當前分支的引用(例如,ref: refs/heads/main),或者如果你處于分離的 HEADdetached HEAD)狀態,則包含一個特定的提交哈希值。

讓我們使用 git reset HEAD^ --hard 重置(reset)到第一個提交。

我們可以看到 HEAD 已切換到第一個提交:

第二個提交消失了。這類似于你進行強制推送(git push -f)時發生的情況。它可能看起來代碼已被擦除—但實際上,你仍然可以使用 git reflog 恢復它。

在這里,我們可以看到第二個提交的 SHA-1 哈希值是 2b9714e。

讓我們通過重置HEAD將它恢復。

讓我們看看提交哈希值。Git 同時支持哈希值的完整和縮短版本:

完整哈希值 (Full hash)

縮短版本 (Short version)

fe8b8e6d36d640a29dc893ecc81bc1a2eeead1ed

f38b8e6

2b9714ec5b229700eed2ce2dc673b8d8b52a1f

2b9714e

Git 中的每個提交都有一個唯一的哈希值作為其“ID”。該哈希值是根據整個提交內容計算出來的,包括:

  • 文件和目錄結構(“樹”對象)
  • 提交信息
  • 元數據,如作者、提交者和時間戳
  • 父提交的哈希值

Git 默認使用 SHA-1(或可選地使用實驗性功能 SHA-256)。你通常不需要完整的哈希值—Git 允許你使用縮短版本(通常 4-7 個字符就足夠了)。在我的例子中,是 f38b 2b97。

這就是 Git 本地工作的方式。

但是 GitHub 呢?這就是事情變得有趣的地方。

GitHub 呢?

GitHub 作為一個構建在 Git 之上的分布式平臺,不僅繼承了 Git 的去中心化機制,還引入了其自身的復雜性和風險層。

讓我們重新審視之前的實驗。

我創建了一個公共倉庫并添加了兩個提交:

然后我運行了:

我們在 GitHub 上看到了什么?

第二個提交消失了—從歷史記錄中擦除了。

當然,我可以使用本地 Git 工具恢復它(如前所示),但我們還能在 GitHub 本身上訪問它嗎?

是的!

你可以直接在瀏覽器中使用以下方式訪問該提交:

對于我的例子:

https://github.com/C4tWithShell/demo/commit/cbc61bd83a87561c101a325b03ec9873a7c0cc62

GitHub 警告:

“此提交不屬于此倉庫的任何分支,可能屬于倉庫外部的某個分支(fork)。”

但整個提交內容仍然可用。

公共倉庫(Public repositories

由于 GitHub 是一個分布式平臺,我們可以將這個想法擴展到連接的倉庫—上游(upstreams)倉庫及其分支(forks)。

我能訪問已刪除分支(fork)中的提交嗎?

我分叉(fork)了我的演示倉庫,在上面工作,并錯誤地添加了一個新的 .md 文件。

然后我意識到了錯誤,并通過 git push -f 刪除了它。

我不再看到那個提交了,但它真的消失了嗎?

多虧了 SHA-1 哈希值,我們可以僅用 4-7 個十六進制字符來定位提交。只有 65,536 (16?) 種可能的組合,對于現代機器來說,暴力破解簡短的 SHA 前綴是微不足道的,并且完全可以自動化。

我仍然可以在我的分支(fork)中找到那個提交。即使該分支后來被刪除,我也可以從原始倉庫訪問它。

如果上游倉庫被刪除了呢?

好的,讓我們反過來想。

假設我向原始倉庫提交了一個秘密(secret),然后在任何人分叉(fork)它之前立即刪除了它。我安全了嗎?

這次,為了確保,我們甚至刪除我的上游倉庫。

刪除我的演示倉庫后,我看到不再有“forked”的鏈接,并且我看不到 SECRET.md 文件了。

這次,我創建了那個分支的一個分支(fork),并使用簡短的 SHA 挖掘提交歷史。這意味著我仍然可以恢復 SECRET.md 提交!

因為只要還有一個分支(fork)存在,該提交就存在。

這怎么可能?

這是可能的,原因在于 GitHub 中的倉庫網絡—倉庫與其分支(forks)之間的關系網。你可以在以下位置探索它:

它顯示:

  • fork了該倉庫;
  • 提交如何在不同分支(forks)間產生分歧;
  • 存在于分支(forks)中但不存在于主倉庫中的提交。

因此,當有人分叉(fork)一個倉庫時,GitHub 會跟蹤父子關系。即使分支(forks)被刪除或設為私有,只要:

  • 該分支曾經是公開的;
  • 在分支被刪除/設為私有之前提交已被推送。

那么,它們可能仍然在網絡圖(network graph)中被跟蹤。GitHub 存儲的提交哈希值,如果你知道 SHA,仍然可以訪問,這是一個已知的元數據泄露途徑。

它會影響私有倉庫嗎?

讓我們用一個私有倉庫試試。

我創建了一個私有倉庫并fork了它。該分支保持私有狀態,無法將其設為公開。我在分支中添加了一個額外的文件。

即便如此,我仍然可以從原始倉庫使用其簡短的 SHA 訪問這個提交。

至少在這種情況下,可見性是受控的——分支無法公開,訪問僅限于協作者(collaborators)。

但真正的問題在這里...

我見過一些公司開源其內部倉庫。在這樣做之前,他們通常會徹底清理主倉庫。

但是分支(forks)呢?

當一個私有倉庫變為公開時:

  • 原始倉庫的分支網絡在發布的那一刻被凍結。
  • 在私有分支(forks)中發布之前所做的所有提交都可能變得公開可見。
  • GitHub 不會警告你這一點。

因此,即使你的主倉庫是干凈的,你也可能正在暴露先前私有分支中的秘密。

讓我們測試一下。我更改了我的原始倉庫的可見性。它只有一個干凈的提交和一個文件。

我能訪問我私有分支(fork)中的那個提交嗎?

成功!我們可以看到在原始倉庫發布之前在私有分支(fork)中做出的所有提交。為了驗證,讓我們向我們的私有分支添加一個新的提交:

現在讓我們嘗試從公共倉庫訪問它:

為什么會這樣?因為一旦倉庫變為公開,GitHub 就會分離倉庫網絡。之后添加到私有分支(fork)的提交就變得隔離了。

這種行為是雙向的:

  • 發布后私有分支(fork)中的提交從公共倉庫是不可見的。
  • 該時間點之后公共倉庫中的提交從私有分支(fork)是不可見的。

這是一個 Bug 嗎?

不,這是 GitHub 的一種設計行為,他們甚至在文檔中提到過。不幸的是,沒有多少人深入研究它。

閱讀下面—GitHub 關于分支(fork)的可見性說明:

當你將倉庫的可見性從私有更改為公共時,其每個現有的私有分支(fork)都將變為私有倉庫,并失去對上游網絡的訪問權限。公共倉庫的分支始終是公共的。

可以采取什么措施來解決它?

  • 始終將 GitHub 視為公開的(Treat GitHub as Public-Always假設你推送的任何內容最終都可能被暴露。密鑰(Secrets)不屬于 Git。使用秘密管理器—VaultAWS Secrets Manager、Doppler、GitHub Secrets 等。
  • 在發布前妥善清理(Clean properly before publishing使用如下工具:

a.TruffleHog

b.deepsecret

c.semgrep Secrets

d.BFG Repo-Cleaner

e.git filter-repo

我推薦:

  1. 結合使用 deepsecrets 或 semgrep-secrets 與 truffleHog 或 gitleaks。它們基于上下文檢測秘密,而不僅僅是熵(entropy)或正則表達式。例如,passwd: hello 可能會被標準工具遺漏,但不會被 deepsecrets 遺漏。但你也應該預料到會有誤報,因為它可能被作為示例提及。
  2. 在 CI 流水線中自動化掃描。
  • 聯系 GitHub 支持進行移除(Contact GitHub Support for Removals如果你不小心推送了敏感數據,聯系支持部門,GitHub 可以從其后端清除對象,但這并非即時生效或有保證的。
  • 如果秘密暴露了,就輪換它們(Rotate secrets if they get exposed

作為最重要的一步,輪換秘密而不是試圖刪除它們。一旦秘密暴露,就假設它已泄露并進行更改。不要心存僥幸!

譯者介紹

涂承燁,51CTO社區編輯,具有15年以上的開發、項目管理、咨詢設計等經驗,獲得系統架構設計師、信息系統項目管理師、信息系統監理師、PMPCSPM-2等認證。

原文標題:Why GitHub Commits Arent as Private as You Think,作者:Vladimir Shelkovnikov

責任編輯:姜華 來源: 51CTO
相關推薦

2020-03-26 10:41:02

API網關大公司

2015-04-30 10:12:13

開源云平臺OpenStack

2017-08-09 14:49:03

WebHTTPS瀏覽器

2014-03-14 09:35:56

內存優化軟件內存優化

2016-01-07 10:17:48

2024-10-31 11:49:41

Kafka管理死信隊列

2021-03-29 13:00:50

代碼替換開發

2023-06-08 18:25:40

Doris場景查詢

2014-08-25 10:17:54

數據中心管理

2015-10-21 10:01:15

AWS云服務Simple

2019-05-17 09:33:50

圖像識別三維重建文本識別

2021-06-09 09:32:58

Esbuild 工具前端

2020-08-03 07:50:56

存儲對象存儲

2019-07-25 14:52:51

2018-10-19 11:15:34

云計算互聯網數據中心

2014-04-23 15:13:42

2017-03-25 21:32:40

Python編碼

2021-08-02 15:24:19

Windows 11Windows微軟

2014-03-21 15:30:06

產品經理PM能力

2015-10-23 09:44:59

PaaS開源云應用
點贊
收藏

51CTO技術棧公眾號

18加网站在线| 91福利视频在线观看| 国产精品av网站| 日韩成人精品在线| 亚洲成人7777| 亚洲一区二区三区xxx视频| 免费人成又黄又爽又色| www.97av.com| 天天做天天爱天天综合网2021| 欧美性xxxx在线播放| 精品高清视频| 日本一二三区不卡| 亚洲综合网站| 一区二区三区四区高清精品免费观看 | 日韩免费在线播放| 亚洲高清不卡一区| 在线观看 中文字幕| 麻豆国产一区二区三区四区| 中文字幕乱码日本亚洲一区二区| 91国产美女视频| 国产在线免费av| 成人精品高清在线视频| 久久久美女艺术照精彩视频福利播放| 欧美激情啊啊啊| 精品久久久久久久久久国产| 欧美成人免费小视频| 五月天激情播播| 网友自拍视频在线| 人妖欧美一区二区| 亚洲一区第一页| 青青在线免费观看视频| 免费福利在线观看| 性久久久久久| 亚洲视频国产视频| 欧美一级黄色片视频| 日韩欧美在线观看一区二区| 亚洲一区二区三区高清| 国产视频在线一区二区| 青青草精品视频在线观看| 国产高清免费在线播放| 蜜桃91丨九色丨蝌蚪91桃色| 色青青草原桃花久久综合| 亚洲a级黄色片| 日本国产欧美| 亚洲欧美日韩在线| 成人片在线免费看| 天堂在线免费观看视频| 成人精品久久| 欧美一区在线视频| 成人免费在线网| 激情小视频在线| 国产曰批免费观看久久久| 欧美俄罗斯乱妇| 婷婷国产成人精品视频| 福利电影一区| 91黄色在线观看| 久久久久久久久久久久久国产| 亚洲精品.www| 日韩精品福利网| 国产999精品久久久| 性色av免费观看| 亚洲一区二区日韩| 亚洲视频免费一区| 丁香激情五月少妇| 成人香蕉社区| 欧美日韩精品一区视频| 久久久亚洲国产精品| 可以在线观看的av| 国产亚洲欧美激情| 高清国产在线一区| 深爱五月激情五月| 蜜桃av噜噜一区| 91亚洲精品一区二区| 黄色片中文字幕| 三级欧美韩日大片在线看| 久久久成人av| 无码人妻精品一区二区中文| 深爱激情综合网| 欧美变态tickling挠脚心| caopor在线视频| 国产在视频一区二区三区吞精| 亚洲第一福利一区| 欧美黄色一级片视频| 国产69精品久久| 日韩一区二区电影在线| www.99在线| 国产91欧美| 精品欧美一区二区三区精品久久 | 六月婷婷综合| 亚洲一级二级在线| 99久久久无码国产精品性色戒| 天堂av网在线| 国产.欧美.日韩| 91精品国产自产在线老师啪| 亚洲黄色免费观看| 激情伊人五月天久久综合| 日本最新高清不卡中文字幕| 中文字幕在线观看你懂的| 一区二区三区精品视频在线观看| 欧美猛交ⅹxxx乱大交视频| 很污很黄的网站| 亚洲国产裸拍裸体视频在线观看乱了中文 | 1769视频在线播放免费观看| 91免费视频观看| 国产精品视频500部| 国产精品无码天天爽视频| 日韩av网站免费在线| 亚洲一区二区三区sesese| 男人天堂亚洲二区| 一区av在线播放| 97久久国产亚洲精品超碰热| 1区2区3区在线视频| 日本精品视频一区二区三区| 亚洲成人福利视频| 成人av地址| 日韩在线免费av| 亚洲免费在线视频观看| 国产成人av一区二区三区在线观看| 日韩免费电影一区二区三区| 国产高清在线| 精品成人国产在线观看男人呻吟| 女人高潮一级片| 中文字幕日韩亚洲| 欧美一区二区三区视频| 欧美大波大乳巨大乳| 亚洲精品日本| 国产精品乱码一区二区三区| 黄色免费在线网站| 亚洲一区在线免费观看| 污片在线免费看| 国产高清亚洲| 精品国产精品网麻豆系列| av漫画在线观看| 一区二区三区日本久久久| 亚洲午夜av久久乱码| 日产电影一区二区三区| 国产精品一区二区久久精品爱涩 | 性一交一乱一乱一视频| 中文字幕一区二区三区色视频| 老司机av福利| 99久久综合国产精品二区| 亚洲美女动态图120秒| 怡红院一区二区三区| 亚洲在线观看| 久久久婷婷一区二区三区不卡| 国产一级免费在线观看| 欧美日韩裸体免费视频| 日本不卡一区二区在线观看| 不卡视频在线| 国产精品丝袜视频| 亚洲成人一级片| 亚洲精品欧美在线| 国产黄色特级片| 亚洲图区在线| 国产成人一区三区| www.亚洲视频| 亚洲一区二区三区自拍| 师生出轨h灌满了1v1| 欧美国产三级| 国产精品成人va在线观看| va视频在线观看| 久久久精品人体av艺术| 又色又爽又高潮免费视频国产| 精品久久中文| 97精品视频在线观看| 中文在线观看免费高清| 国产精品欧美精品| 欧美亚洲另类色图| 年轻的保姆91精品| 久久69精品久久久久久久电影好 | 国产成人在线视频免费播放| 蜜桃av久久久亚洲精品| 超碰免费公开在线| 日本二三区不卡| 国精品人伦一区二区三区蜜桃| 精品综合免费视频观看| 另类视频在线观看+1080p| 久久99久久99精品免观看软件| 欧美一级淫片007| 久久久久久天堂| 久久国产综合精品| 日本高清不卡一区二区三| 青草影视电视剧免费播放在线观看| 欧美亚洲尤物久久| 国产精品揄拍100视频| 欧美视频成人| 亚洲在线视频福利| 日本蜜桃在线观看视频| 日韩视频一区在线观看| 国产一级做a爱片久久毛片a| 国产精品一区二区黑丝| 久久精品免费一区二区| 欧美电影一二区| 国产精品啪视频| 黄色小视频在线免费观看| 777奇米四色成人影色区| 日本在线观看网址| 成人性生交大片免费看视频在线| 韩国黄色一级大片| 日本午夜免费一区二区| 在线色欧美三级视频| 色av性av丰满av| 亚洲欧美日韩精品久久久久| 久久久久久久久免费看无码 | 97在线视频人妻无码| 亚洲6080在线| 日韩综合第一页| 亚洲成人原创| 国产在线一区二| 草草视频在线| 日韩av综合网| 日本视频免费观看| 国产丝袜美腿一区二区三区| wwwxxx色| 一本久道久久综合婷婷鲸鱼| 伊人精品久久久久7777| 亚洲欧美综合久久久久久v动漫| 97在线日本国产| 永久免费网站在线| 日韩中文字幕在线视频播放| 国产男女猛烈无遮挡| 一区二区三区在线免费观看 | 亚洲三级久久久| 国产伦精品一区二区三区视频女| 国产1区2区3区精品美女| xxxx在线免费观看| 青娱乐精品视频在线| 久久精品一区二| 性8sex亚洲区入口| 无码中文字幕色专区| 午夜欧洲一区| 国产精品久久久久久久久久久久久 | 99精品视频在线播放免费| 欧美在线制服丝袜| 亚洲人与黑人屁股眼交| 国产精品一区二区黑丝| 波多野结衣国产精品| av小说在线播放| 国产一区二区中文字幕| 欧美一级黄色片视频| 久久国产精品久久w女人spa| 日韩欧美视频一区二区| 亚洲免费专区| 欧美不卡在线一区二区三区| 色综合久久中文| 久久综合九色综合久99| 亚洲成在人线免费观看| 就去色蜜桃综合| 美女毛片一区二区三区四区最新中文字幕亚洲| 国内精品视频在线播放| 欧美亚洲tv| 成人国产精品久久久久久亚洲| av免费在线观看网址| www.99久久热国产日韩欧美.com| 137大胆人体在线观看| 爽爽爽爽爽爽爽成人免费观看| 在线中文资源天堂| 裸体女人亚洲精品一区| 午夜视频福利在线| 欧美高清视频在线高清观看mv色露露十八| 久久久久久av无码免费网站| 亚洲综合免费观看高清在线观看| 国产在线观看成人| 国产精品久久毛片| 四虎884aa成人精品| 久久综合中文字幕| 中文字幕在线播放一区二区| 丰满少妇久久久久久久| 国产xxxxxxxxx| 国产一区二区伦理| 美国黄色一级视频| 久久久精品天堂| 老熟妇高潮一区二区三区| 一区二区三区日韩精品视频| 日本中文字幕在线免费观看| 色综合久久久久综合体桃花网| 日本黄色小说视频| 国产欧美一区二区精品仙草咪| 无码人妻aⅴ一区二区三区玉蒲团| 成人丝袜18视频在线观看| 波多野结衣一本| 综合精品久久久| 国产在线综合视频| 亚洲欧美色一区| 亚洲影院在线播放| 欧美高清激情brazzers| 欧美视频一二区| 日韩午夜激情av| 亚洲欧洲精品一区二区| 九九久久婷婷| 大地资源网在线观看免费官网| 午夜在线视频一区二区区别| 亚洲天堂国产视频| 99精品国产一区二区三区不卡| 一卡二卡三卡四卡五卡| 免费在线观看日韩欧美| 无码国产精品一区二区高潮| 久久综合精品国产一区二区三区| 韩国一级黄色录像| 欧美丝袜一区二区三区| 国产手机av在线| 在线成人中文字幕| 9999热视频在线观看| 91精品久久久久久久久中文字幕 | 欧美成人aa大片| 成年人视频网站在线| 亚州精品天堂中文字幕| 欧美高清你懂的| 欧美日韩在线精品| 亚洲传媒在线| 国产爆乳无码一区二区麻豆| 欧美日本久久| 亚洲精品视频导航| 久久在线观看免费| 午夜视频久久久| 青青青草视频在线| 国产精品欧美日韩久久| 亚洲精品动态| av7777777| 视频一区欧美日韩| 亚洲美女在线播放| 一区2区3区在线看| 国产三级精品在线观看| 中文字幕在线观看亚洲| 精品自拍一区| 国产精品999999| 自拍偷拍精品| 欧美 日韩 国产在线观看| 成人做爰69片免费看网站| 日本一级特级毛片视频| 欧美日韩亚洲国产综合| 国产日韩在线观看一区| 中文字幕精品一区久久久久| 在线黄色的网站| 国产精品久久久久91| 亚洲最大在线| 国产三区在线视频| 久久精品久久99精品久久| 男人天堂av电影| 国产精品久久网站| 精人妻无码一区二区三区| 欧美丰满美乳xxx高潮www| av在线电影网| 国产精品日韩在线一区| 欧美日韩精品在线一区| 美女黄色片视频| 国产精品视频一二| 这里只有精品9| 日韩欧美国产午夜精品| 欧美亚洲日本| 日本一区二区在线免费播放| 国产91久久精品一区二区| 日韩有码免费视频| 中文乱码免费一区二区 | 精品国产成人系列| wwww在线观看免费视频| 日本一区二区三区四区视频| 亚洲成人一品| 午夜免费高清视频| 国产精品短视频| 国产超碰人人模人人爽人人添| 欧美成人免费小视频| 国产精品国产| 黑森林福利视频导航| 国产视频一区二区三区在线观看| 97人妻精品视频一区| 精品处破学生在线二十三| 欧美hdxxxx| 久久精品女人的天堂av| 石原莉奈在线亚洲三区| 三级黄色免费观看| 精品国产人成亚洲区| 天堂√中文最新版在线| 视频一区视频二区视频三区高| 加勒比av一区二区| 久草视频精品在线| 亚洲欧美日韩国产中文专区| 免费成人毛片| 女人帮男人橹视频播放| 久久丝袜美腿综合| av一级黄色片| 日韩av手机在线| 你懂的国产精品| 美女100%无挡| 欧美一区二区性放荡片| 在线观看网站免费入口在线观看国内 | 久久在线免费| 日本一区二区在线观看视频| 91久久一区二区| 日本h片在线观看| 涩涩日韩在线| 白白色 亚洲乱淫| 欧美日韩精品在线观看视频 | av成人午夜| 一区二区中文字| 深爱五月激情网| 日韩精品中午字幕| 国产精品字幕| 国产资源在线视频| 亚洲免费看黄网站|