无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

網易首頁 > 網易號 > 正文 申請入駐

事件溯源里的“只追加”不可靠,一個哈希鏈技巧堵上漏洞

0
分享至

在事件溯源的敘事里,系統鼓吹的“不可變性”總是聽起來很完美:你不更新記錄、不刪除記錄,只管向后面追加新事件,于是歷史日志就成了永久性的鐵證。然而只要往底層看一眼,就會發現這多半只是一種約定,而不是物理約束。事件流里的每條記錄之所以不可變,本質上是因為所有訪問這段數據的代碼都同意不去碰它,并非有什么機制真的能阻止修改。在存儲層,這些事件不過是 PostgreSQL 里的一行行普通記錄,而任何擁有寫入權限的數據庫管理員都可以直接碰那些行。一次“清理舊數據”的遷移腳本、一條凌晨兩點誤連到主庫的手動查詢、一份還原時出現了極輕微字節差異的備份,都能在不產生任何告警的情況下改掉事件內容。

更麻煩的是,改動其中一行之后,整個系統的重放過程仍然會走得四平八穩。聚合根照常重建,投影也照常重建,一切看起來都好好的。通常第一個察覺到異樣的人是某個發現賬戶余額不對勁的顧客,可到了那個時候,追查線索早就涼透了。光靠追加操作本身,并不足以阻止篡改被發現前已悄悄滲入所有后續計算。要讓事件流擁有真正的完整性,需要在每個事件之間建立起一種鏈式依賴。

方法并不復雜:給每一行增加兩個額外的列——一個存放當前行內容的哈希值,另一個存放前一行的哈希值。這樣一來,事件流就變成了一個前后咬合的鏈條。比如第一條“賬戶已開立”記錄,其前一哈希指針指向一串零值,內容哈希則由負載數據計算得出;第二條“存款事件”的前一哈希指向前一條的內容哈希,自身內容哈希又基于該指針和本次負載共同算出;第三條“取款事件”同樣依此鏈接下去。這里用到的哈希算法不過是 SHA-256,把“上一行的哈希”與“當前負載的 JSON 序列化字節”拼接在一起后做一次散列,毫無花哨。真正厲害的地方在于,每個哈希都依賴于前一個哈希,所以你一旦改動了某條記錄的負載,它的內容哈希就不再匹配;如果你想把這個內容哈希也改掉以掩蓋篡改,那么下一條記錄的前一哈希指針就會立刻斷裂。修好一處,必然弄壞下一處,無從掩飾。

追加新事件時,代碼也只是把新舊數據串起來再求一次哈希,大概四十行就能實現。在 C# 風格的片段里,首次追加時把前一哈希設為約定的“創世哈希”(全零),然后調用 ComputeHash 方法,將前一哈希的字節數組與當前負載的 JSON 序列化字節拼接,交給 SHA256 計算,最后把序號、負載、前一指針和內容哈希封裝起來存入列表。驗證過程則正好是倒著走一遍:遍歷所有記錄,對每條記錄檢查它的前一哈希是否確實等于上一條記錄計算出的內容哈希,再重新對當前負載執行一次哈希計算,看是否與存儲的內容哈希一致。任何一步失敗,都立即拋出損壞異常,并指出具體序列號。

設想有人直接跑到數據庫里把 Alice 第 2 號存款事件中的 50 美元改成 5000 美元,那么在驗證走到第 2 條時,重新計算的哈希必然與存儲值不同,程序會在這一行精準停住,并拋出一句明確的提示:“事件流篡改在序列 2 處被檢測到:存儲的哈希與負載重新散列的結果不匹配(負載在提交后被修改)”。這個機制不依賴任何外部審計系統,也不要求額外的保護區,只靠事件流自身的內在結構就能判定歷史是否曾被污染。

整個方案的價值還不只是防住主動篡改。由于每一行的哈希都融入了上一行的指紋,哪怕是無意間的靜默損壞——比如存儲層出現位翻轉,或者備份恢復時導致的細微偏差——同樣會觸發驗證失敗。它對所有寫入者,包括擁有最高權限的數據庫管理員,都施加了同一種不可繞過的約束。在事件溯源中,“只追加”本來只是一個約定,而加上這條哈希鏈之后,它才真正變成一道物理性質的護城河。

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
天津銀行被罰90萬元,一人遭禁業12年,涉員工從事違法活動等多項違規

天津銀行被罰90萬元,一人遭禁業12年,涉員工從事違法活動等多項違規

讀創
2026-05-29 20:35:16
大A股價血流成河的原因,找到了!

大A股價血流成河的原因,找到了!

功夫財經
2026-05-30 18:07:29
瞞不住了?總決賽爆出巨大貓膩,白邊神秘失蹤,官方解釋難掩真相

瞞不住了?總決賽爆出巨大貓膩,白邊神秘失蹤,官方解釋難掩真相

寶哥精彩賽事
2026-05-30 20:22:06
網紅博主被蟲咬后不幸去世,年僅39歲!家屬:她離世前多日吃不下飯,醫生提醒

網紅博主被蟲咬后不幸去世,年僅39歲!家屬:她離世前多日吃不下飯,醫生提醒

19樓
2026-05-30 08:56:41
天王嫂朱麗蒨素顏逛超市:給劉德華父女買水果 帶傭人挑打折保鮮

天王嫂朱麗蒨素顏逛超市:給劉德華父女買水果 帶傭人挑打折保鮮

梅亭談
2026-05-31 00:15:57
阿根廷前大使警告:再發生一次,會失去中國信任

阿根廷前大使警告:再發生一次,會失去中國信任

觀察者網
2026-05-30 22:48:17
熱熔膠槍事件后續:陳老師生活照曝光,面相兇狠,網友直言害怕!

熱熔膠槍事件后續:陳老師生活照曝光,面相兇狠,網友直言害怕!

譚談社會
2026-05-30 20:42:53
48歲夏奇拉"逆生長"惹爭議:26年前皮裙少女,如今紫裙凍齡被疑"科技與狠活"?

48歲夏奇拉"逆生長"惹爭議:26年前皮裙少女,如今紫裙凍齡被疑"科技與狠活"?

生活觀察員啊
2026-05-25 01:14:32
莫大的諷刺!直到釋永信被判刑,才知道武當山李光富有多令人欽佩

莫大的諷刺!直到釋永信被判刑,才知道武當山李光富有多令人欽佩

娛樂洞察點點
2026-05-30 09:47:19
我如今已68了,以親身血淚教訓告訴你:不要跟任何人,包括你的父母、子女、枕邊人,分享這兩件事

我如今已68了,以親身血淚教訓告訴你:不要跟任何人,包括你的父母、子女、枕邊人,分享這兩件事

心理觀察局
2026-05-23 07:00:06
劇烈疼痛!好奇舔了一口,2歲娃在公園中毒!當心,很多地方都有

劇烈疼痛!好奇舔了一口,2歲娃在公園中毒!當心,很多地方都有

新浪財經
2026-05-30 12:43:12
不再口頭警告!荷蘭軍艦闖西沙挑釁,中國首出手,12分鐘打擊癱瘓

不再口頭警告!荷蘭軍艦闖西沙挑釁,中國首出手,12分鐘打擊癱瘓

萬物知識圈
2026-05-29 14:49:05
兩性關系:55-65歲這十年,惜命最好的方式,不是鍛煉,做好這6點

兩性關系:55-65歲這十年,惜命最好的方式,不是鍛煉,做好這6點

三農老歷
2026-04-13 17:10:06
被抓、家中金條堆成山,原來王麗坤和車曉是同類人

被抓、家中金條堆成山,原來王麗坤和車曉是同類人

阿傖說事
2026-05-16 15:46:45
第6號臺風“薔薇”強度逐漸增強 最大強度可達臺風級

第6號臺風“薔薇”強度逐漸增強 最大強度可達臺風級

北青網-北京青年報
2026-05-30 11:04:18
演員林沐然中戲轉入湖南藝術職業學院引熱議,工作室:已全面停止

演員林沐然中戲轉入湖南藝術職業學院引熱議,工作室:已全面停止

韓小娛
2026-05-30 08:55:58
中國手機系統市場最新排名:安卓下滑明顯 華為鴻蒙繼續力壓蘋果

中國手機系統市場最新排名:安卓下滑明顯 華為鴻蒙繼續力壓蘋果

快科技
2026-05-28 16:18:34
時隔10年,中國外長訪問加拿大!專家:時間點非常精妙,釋放了這些信號

時隔10年,中國外長訪問加拿大!專家:時間點非常精妙,釋放了這些信號

南方都市報
2026-05-30 18:08:54
新華社消息|商務部:中歐雙方正探討建立貿易投資磋商機制

新華社消息|商務部:中歐雙方正探討建立貿易投資磋商機制

新華社
2026-05-30 21:22:59
4100點的“中場戰事”:A股正經歷“冰與火”的拉鋸戰

4100點的“中場戰事”:A股正經歷“冰與火”的拉鋸戰

海右那人
2026-05-31 05:43:12
2026-05-31 06:12:49
硬核玩家2哈
硬核玩家2哈
沉淀中,勿擾
4206文章數 24關注度
往期回顧 全部

科技要聞

車圈大佬發聲:價格戰遠去,但競爭仍殘酷

頭條要聞

兩名9歲女孩被困電梯近2小時 求救幾十次物業無動于衷

頭條要聞

兩名9歲女孩被困電梯近2小時 求救幾十次物業無動于衷

體育要聞

巴黎再度捧起歐冠獎杯 槍手眾將黯然神傷

娛樂要聞

張碧晨《歌手》 “活人微死” 自嘲

財經要聞

雙匯管不住一頭豬

汽車要聞

900V+3.2秒破百 領克10+&領克10上市16.99萬元起

態度原創

本地
房產
手機
藝術
公開課

本地新聞

用剪紙的方式,打開江蘇揚州

房產要聞

紅動五月!全國搶入核心資產,廣州盯緊凱旋新世界!

手機要聞

蘋果iOS27長這樣?界面圖細節搶先看

藝術要聞

我想有個小院,從此荒度余生

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進入關懷版