
寫系統架構的時候,我們對「單點故障」超級敏感。多可用區、Circuit Breaker、Graceful Degradation,一個都不能少。結果排自己的讀書進度表時,卻很誠實地假設大腦是 100% 妥善率、沒有 Latency、更不會 Timeout。這禮拜複盤衝刺進度,發現這個雙標實在有點好笑。
後來想通一件事:Buffer Day 根本不是偷懶的藉口,而是把 SRE 那套「接受中斷必然發生」的思維,搬進讀書計畫裡。現代資安談的 營運韌性(Resilience,Assume Disruption) 核心精神也是這樣——不是幻想自己永遠不會被打斷、不會累、不會臨時加班,而是先承認中斷一定會發生,重點放在 核心任務不能停、其他部分可以優雅降級 。
排進度時硬塞好塞滿,一旦哪天感冒或臨時加班,整條進度就雪崩式延遲,跟系統沒做容錯設計、單一節點掛掉全站陣亡是一樣的道理。留一天 Buffer,就是幫大腦裝一個斷路器。
一 讀書
二 讀書
三 讀書
四 讀書
五 讀書
六 緩衝日
日 複盤
這張表控制在 9 欄以內,手機直屏不用橫滑就看得完整——這件事本身也是一種「優雅降級」的示範。

這組是我這輪複盤裡錯最多次的地雷。三個名詞: XSS、 SQL Injection、 MITM,考題最愛把它們兜在一起互相誘答。
先講清楚一個判斷基準: 看「誰在解析誰的程式碼」。
這兩個的共同點只有「都靠注入惡意內容」,但解析者不同、戰場不同,混為一談是最容易被誘答的地方。
再來是 XSS 不是 MITM 這個常被誤解的點。MITM(中間人攻擊)的定義是攻擊者站在 通訊鏈路的中間,攔截、竊聽甚至竄改雙方往來的封包——像是在電話線上裝竊聽器。但 XSS 的腳本是直接 執行在受害者瀏覽器裡,它不需要站在通訊路徑中間,而是騙瀏覽器「自己人」執行惡意程式碼。一個是路徑上的竊聽者,一個是混進系統內部的臥底,攻擊面完全不同。
⚠️ 看到題目同時出現「網頁」「資料庫」「攔截封包」三個關鍵字時,先問自己: 這段惡意程式碼最後是誰在跑? 瀏覽器跑的是 XSS,資料庫跑的是 SQLi,路徑上被動攔截的才是 MITM。

存取控制模型這題,光靠死背定義很容易在考場上腦袋打結,我後來改用「保全比喻」記得比較牢:
判斷口訣:RBAC 看你是誰(職稱)、MAC 看貼了什麼標籤(強制比對)、ABAC 看當下發生了什麼(動態運算)。這三個門神各司其職,出場時機不一樣,不是誰比誰更「進階」的線性關係。

「我有收到簡訊驗證碼欸,這樣應該很安全吧?」——這句話本身就是個資安陷阱。 收到簡訊,不等於這條路徑沒被攔截過。
拆成兩條完全不同的失守路徑會清楚很多:
路徑一:通訊層失守(SIM 劫持 / SIM Swap)
攻擊者靠社交工程或偽造證件,跑去電信櫃檯冒名申請 換卡,把受害者的門號轉移到自己手上的 SIM 卡。之後所有簡訊 OTP 都會送到攻擊者手機,受害者反而完全收不到。這一關失守發生在 電信商的身分驗證流程,跟你的網路行為習慣無關。
路徑二:應用層失守(即時釣魚轉填 / Real-time Phishing Relay)
攻擊者做一個一模一樣的假登入頁,受害者輸入帳密後,攻擊者 即時拿去真網站登入,順便觸發真的 OTP 簡訊。受害者收到「真的」驗證碼,填進假頁面,攻擊者立刻轉手拿去完成登入。這裡失守的不是簡訊本身,是 應用層這個傳話筒被攻擊者插了一手。
兩條路徑指向同一個結論:只要驗證碼是「人眼讀出來、手動輸入」,就有被中間轉手的空間。FIDO2 解決這個問題的關鍵在於 Origin 綁定——裝置產生的簽章跟發起請求的網域強制綁死,就算受害者被騙到假網站,簽章也對不上真網站的 Origin,釣魚頁面拿到的東西完全沒用。這不是「驗證碼更長更複雜」的量變,是「拿掉人工轉填這個環節」的質變。

這段是這次複盤裡最想敲醒過去自己的部分:備份日誌顯示成功,不等於資料真的救得回來。
很多團隊的備份其實是「即時同步」——正式環境資料一變動,備份端幾乎同步跟著變。聽起來很安全,實際上勒索軟體攻進來的時候,加密行為會沿著這條同步線路雙向擴散,正式環境跟備份端幾乎同時淪陷,備份反而變成幫兇。這是備份「有做」跟備份「有用」之間最殘酷的落差。
真正頂用的防線靠兩件事:
另一個常被考的細節是還原順序陷阱:Full(全量)+ Incremental(增量)+ Differential(差異)三種備份混用時,還原順序點錯,資料可能對不上、甚至還原失敗。Incremental 要照時間序逐一還原到最後一份,Differential 只需要最新那份差異加上最近一次全量。順序記反,考場上跟救災現場一樣會出包。
⚠️ 備份策略只驗證「有沒有備份」,不代表
救不救得回來——定期做一次實際還原演練,才是真正確認防線活著的方法。
寫這系列文章有個小堅持:HackMD 那份完整衝刺筆記,我保留了原生直式 Mermaid 圖,因為那邊的編輯器吃得下、看得順。但搬來 iThome 發布時,全部降階成這種緊湊的 ASCII / Unicode 文字框。
原因很單純:iThome 這邊不支援 Mermaid 語法,硬貼上去只會變成一堆看不懂的程式碼區塊。而且很多人是滑手機看鐵人賽文章,如果圖表寬度抓不好,直屏手機上左右橫滑找內容的體驗非常糟。所以這邊看到的每張示意圖,都控制在 20 欄以內的視覺寬度,就是為了讓大家不用轉手機、不用縮放,直接讀完。
雙軌不是為了炫技,是兩邊讀者的閱讀情境本來就不一樣。
完整衝刺筆記(含原生 Mermaid 圖)都在這裡,歡迎收藏對照:
👉 https://hackmd.io/@lanss/Sy4ABY9dGl