billy6go

「匿名」通常只是缺少姓名欄位。

這只是起步,而不是設計方法。一份調查表即使省略姓名,仍可能透過帳戶、邀請權杖、IP 位址、Cookie、裝置識別碼、小型團隊或揭露性自由文本,將答案連結到特定個人。

真正有意義的工程問題是:

此任務實際需要哪些身份路徑?若移除其中一條,會發生什麼事?

以下是我們在開發 CandorKit 這款短效期調查探測工具時使用的檢查清單。

1. 先盤點資料路徑,再撰寫表單

列出所有可能進入、離開或持久存在於系統中的值:

  • 調查標題與問題
  • 回應選項與自由文字
  • 時間戳記
  • 帳戶或邀請識別碼
  • 網路與裝置中繼資料
  • 分析事件
  • 匯出檔案與複製摘要
  • 管理秘密

再針對特定任務將每一項標註為必要、選填或禁止。「框架預設會收集」並不是需求。

CandorKit 的應用程式資料庫僅儲存調查文字、答案、時間戳記、私密擁有者金鑰的雜湊值,以及到期時間戳記。它不會將姓名、帳戶 ID、IP 位址、使用者代理或 Cookie ID 附加到答案上。

這項聲明比「沒有人能識別受訪者」更嚴謹。網路供應商仍會處理一般請求。問題措辭、小型群體、獨特事件以及自由文字,即使應用程式省略身份欄位,仍可能揭露個人身分。

2. 分離受訪者存取與擁有者存取

公開回應 URL 與私密結果 URL 扮演不同的信任角色。若重複使用同一條權杖連結,容易造成意外揭露。

CandorKit 會產生一組私密擁有者金鑰,並置於 URL 片段中。瀏覽器不會在一般 HTTP 請求路徑中傳送片段。伺服器儲存的是雜湊值而非原始金鑰。

此設計有代價:沒有復原流程。若擁有者遺失私密連結,服務無法重建存取權。此權衡應在分享調查前即清楚告知,而非隱藏在支援文件裡。

3. 為資料保留設定可執行的邊界

「我們在不再需要資料時刪除」並非可操作的規則。

可執行的規則必須包含:

  1. 已知的到期時間戳記;
  2. 到期後拒絕新的讀取或寫入;
  3. 清理程序;
  4. 使用者可見的文字說明;
  5. 關於系統外複本的聲明。

CandorKit 為每份調查指定七天的資料庫到期日,拒絕過期存取,並執行排程清理。CSV 匯出、螢幕截圖、複製的分析及其他下游檔案不在自動刪除邊界內。

4. 讓分析遠離敏感酬載

分析事件應描述產品行為,而非調查內容。請勿將標題、問題、答案、擁有者金鑰或私密連結傳送到工作階段重播或事件屬性中。

此規則同樣適用於日誌與錯誤回報。若請求主體或例外酬載將敏感文字複製到他處,僅遮罩 UI 是不夠的。

5. 將問題設計納入隱私模型

若調查要求受訪者在散文中自我揭露,基礎架構無法挽救。

針對敏感回饋:

  • 避免詢問姓名、確切地點、員工編號或不必要的人口統計資料;
  • 提醒民眾勿在自由文字中提及自己或他人;
  • 避免會在小群體中孤立單一人物的組合;
  • 在確切數值對任務沒有幫助時,選擇多選題或範圍;
  • 勿將輕量級匿名調查用於緊急事件、受管制報告或受保護的檢舉。

實務教訓是:匿名調查設計是減法。移除身份路徑、縮短保留期、分離權限,並清楚說明剩餘限制。

CandorKit 是針對此狹義模式的運作探測工具:https://candorkit.com/