SDK redaction helper 在事件離開 SDK(進入 HTTP POST payload)前掃描事件內容,把匹配敏感資訊 pattern 的欄位值替換為 [REDACTED]。Redaction 在 SDK 端執行,確保敏感資訊不會經過網路傳輸到 collector — 即使 transport 層被攔截,攻擊者看到的也是脫敏後的資料。

預設 redaction rule

SDK 內建一組預設 rule,處理常見的敏感資訊 pattern:

密碼欄位

匹配 data 物件中 key 包含 passwordpasswdsecrettokenapi_keyapiKeyauthorization 的欄位。匹配方式是 key 名稱的子字串比對(case-insensitive)。

URL 中的認證資訊

匹配 https://user:password@host 格式的 URL,把 user:password 部分替換為 [REDACTED]

Stack trace 中的檔案路徑

匹配 stack trace 字串中的使用者目錄路徑(/Users/username//home/username/C:\Users\username\),替換為 [USER_HOME]/。避免使用者名稱從 stack trace 洩漏。

自訂 redaction rule

業務特定的敏感資訊(信用卡號、身分證字號、醫療資料)不在預設 rule 的範圍內。SDK 提供 API 讓開發者在 init 時註冊自訂 rule。

1Monitor.init({
2  redactionRules: [
3    { pattern: /\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b/, replace: '[CARD]' },
4    { keyPattern: /^ssn$/i, replace: '[REDACTED]' },
5  ],
6})

自訂 rule 和預設 rule 一起執行。如果同一個值被多個 rule 匹配,第一個匹配的 rule 生效(rule 的執行順序:預設 rule 先,自訂 rule 後)。

Redaction 的執行時機

Redaction 在事件進入 flush payload 的那一刻執行 — buffer 中的事件保持原始內容,flush 時複製一份並在複製上執行 redaction。

在 buffer 中保持原始內容的理由是 debug:開發者在本地 console 看到的 log 應該包含完整資訊(開發環境不需要脫敏),只有離開 SDK 時才脫敏。SDK 可以提供 debugMode flag — debugMode 開啟時 console log 印出原始內容,HTTP POST 仍送出脫敏後的內容。

Redaction 和模組七的關係

SDK redaction helper 是模組七 資安與隱私中 redaction 策略的實作層。模組七定義「什麼資訊需要被保護」(策略),本章定義「SDK 如何在程式碼中實現這個保護」(實作)。

兩者的分工:

層級職責定義在
策略層哪些欄位需要 redaction、哪些 pattern 敏感模組七
實作層預設 rule、自訂 rule API、執行時機本章
驗證層確認脫敏後的事件不包含敏感資訊collector 端

Collector 端可以做第二道檢查(re-scan 收到的事件是否仍包含敏感 pattern),作為 SDK 端 redaction 的備援。但主要的脫敏責任在 SDK 端 — 資料離開 SDK 後經過網路,已經暴露在傳輸風險中。

下一步路由