字串脫敏
在把 API 金鑰、令牌、郵箱和賬號貼上到工單或聊天前先做遮蔽。可設定保留開頭與結尾的字元數、遮蔽字元,以及是否隱藏真實長度。
分享金鑰的「樣子」,而不是金鑰本身。 貼上令牌、金鑰、郵箱或賬號,選擇開頭和結尾各保留多少字元。中間部分會被替換為遮蔽字元,同事可以確認你指的是哪一份憑證,卻永遠看不到它。
脫敏不是加密。如果金鑰已經洩露,請輪換它,而不是把它打碼。
在把 API 金鑰、令牌、郵箱和賬號貼上到工單或聊天前先做遮蔽。可設定保留開頭與結尾的字元數、遮蔽字元,以及是否隱藏真實長度。
分享金鑰的「樣子」,而不是金鑰本身。 貼上令牌、金鑰、郵箱或賬號,選擇開頭和結尾各保留多少字元。中間部分會被替換為遮蔽字元,同事可以確認你指的是哪一份憑證,卻永遠看不到它。
脫敏不是加密。如果金鑰已經洩露,請輪換它,而不是把它打碼。
把憑證的中段塗掉,能很好地解決一個很窄的問題:讓你在不傳輸金鑰的前提下談論它。工單、缺陷報告、截圖和聊天記錄一直在洩露憑證,而起因往往只是有人需要確認「用的是哪一個」金鑰,而不是「金鑰是什麼」。展示 sk_live_51H8...FgH 完整回答了前一個問題,對後一個則隻字未提。
這就是它的全部價值,因此有必要把邊界說清楚。脫敏是為人際溝通所做的單向、有損變換。它不是加密,因為沒有金鑰、也不打算還原;它不是雜湊,因為它並不為抵抗什麼而設計。它更像小票上只打印銀行卡後四位:足以識別,不足以使用。
每多露一個字元,攻擊者就少猜一個字元,所以在能完成識別任務的前提下,前後綴越短越好。對長隨機令牌來說,兩端各留四個字元是合理的預設值,多數服務商的控制台也是這麼顯示的。對短值要留得更少:八位 PIN 露出四位,幾乎就什麼都沒剩下。
結構化的值需要額外斟酌,因為可見部分可能比看上去更有資訊量。許多 API 金鑰帶有含義明確的字首,而 sk_live_ 與 sk_test_ 的區分,通常正是你想保留的。郵箱地址則是相反的陷阱:保留域名一般沒問題,但本地名加上一個小域名往往能定位到具體某個人,於是脫敏後的字串又變回了個人資訊。
本工具不允許首尾兩個視窗重疊。如果兩項設定加起來會覆蓋整個字串,它會自動收縮——因為重疊遮蔽的失敗後果,是把原值完整打印出來。
保留長度的遮蔽也保留了資訊。星號的個數會準確告訴讀者金鑰有多長,這既縮小了暴力破解的範圍,也可能直接暴露憑證型別,因為很多金鑰格式長度固定。對密碼而言,公開長度是實實在在的讓步。
固定寬度選項會把整個中段替換為固定數量的遮蔽字元,無視真實長度,於是所有脫敏結果看起來一樣長。只要輸出會被團隊之外的人看到,就該啟用它。當你和同事一起排查、長度本身具有診斷價值時(例如懷疑環境變數被截斷),再使用保留長度的預設行為。
最後,請把它當作一個排版步驟,而不是事故響應。如果一個仍然有效的金鑰已經出現在工單、日誌或程式碼倉庫裡,給副本打碼不會改變原始洩露的事實。請先輪換憑證,之後再對要貼上的內容做脫敏。