如何驗證線上工具沒有上傳你的檔案
將回執作為目前版本的證據前,請核對測量日期、執行環境及發版綁定狀態。
為什麼要驗證而不是相信
處理方式是可檢驗的。任何工具都可以說你的檔案不會離開裝置;只有當真實任務中的網路流量可以觀察、可以重現時,這個主張才成為證據。本指南教你一個方法——在工具工作時觀察瀏覽器送出了什麼——然後展示同樣的方法如何作為長期公開的工件運轉,讓關於 Toolars 的主張可以被核查,而不是被相信。
- 承諾與證據標籤是承諾,封包是證據;差別在於封包可以重播、檢查和質疑。
- 一個方法,任何工具方法與工具無關:它在瀏覽器內建的網路面板中執行,大約需要一分鐘,適用於你想測試的任何網站。
- 先在自己身上驗證本指南不點名任何其他服務,也不對任何其他網站的行為做任何斷言;它教你檢查方法,然後用 Toolars 自己公開的證據做示範。
六十秒的 DevTools 檢查
網路面板可以協助檢查測試期間的請求。證據只涵蓋實際擷取的瀏覽器執行環境、網路通道與時間範圍。
處理與下載期間持續記錄,並註明版本、瀏覽器狀態與擷取範圍。僅憑一份 DevTools 記錄,不能保證所有可能的網路通道都已被擷取。
- 先開啟並清空先開啟工具的頁面和網路面板——開發者工具,然後 Network 標籤——清空記錄並保持錄製。載入頁面總會產生 HTML、腳本和樣式的請求;這種頁面殼流量是預期之內的。
- 用可捨棄的檔案試使用專門準備的測試檔案,只執行待檢查的任務。期間仍可能出現背景請求,應檢查酬載後再判斷是否來自這次操作。
- 觀察動作按下工具的動作並觀察列表。本機工具可能在首次使用時取得程式碼、字型或引擎資源——而在預熱執行之後,理想情況下什麼都不發生。
讀記錄:頁面殼的流量不是你的檔案
關鍵技能是區分頁面流量和資料流量。頁面殼流量把應用送進你的瀏覽器;資料流量把內容運走。知道要看什麼之後,兩者在面板裡看起來非常不同。
- 頁面殼請求指令碼、樣式、字型與引擎是正常的頁面資源。但熟悉的路徑、副檔名或較小的請求本文,不能證明請求不含使用者資料;還要檢查目的地與酬載。
- 上傳的特徵檔案資料可以透過同源或跨源請求離開裝置。檢查 POST、PUT、multipart 本文及其他資料通道;僅憑請求方法、目的地或大小,不能判定是否上傳了檔案。
- 打開檢視體積本身在兩個方向上都不構成證明:壓縮分塊、可續傳的工作階段和 WebSocket 都可能把一次傳輸拆開。證據在請求的方法、目的地和載荷裡——打開它,看。
快取和 Service Worker 會改變你看到的東西
網路記錄只反映目前瀏覽器狀態下的這次執行。快取和 Service Worker 會改變資源的取得方式,因此檢查時需要記錄並控制這些狀態。
- 預熱是正常的重複造訪時,已預熱的網站會從磁碟或 Service Worker 提供頁面殼,面板顯示的請求遠少於第一次。預熱後請求變少是健康的本機工具的樣子——它本身不是任何事的證明。
- 從乾淨狀態開始為了讀得乾淨,請從新的瀏覽器設定檔或無痕視窗開始,啟用面板的停用快取選項,並記住無痕模式並非在每個瀏覽器都會攔截 Service Worker。
- 攔截 Worker公開驗證指令碼為每個情境建立新的瀏覽器執行環境,並停用 Service Worker,以減少先前狀態的干擾。仍須記錄哪些資源經過預熱,以及測量時段從何時開始。
金絲雀檢查:給檔案做記號,再搜尋
在測試檔案中嵌入唯一標記,再搜尋擷取的請求。沒有精確相符,只代表沒有找到該標記;編碼、壓縮、加密、部分傳輸或擷取不完整都可能導致未命中。
將標記檢查與酬載檢查、明確的擷取範圍搭配使用。說明本次執行觀察到了什麼,以及仍無法排除什麼。
- 做記號製作一個可捨棄的檔案,嵌入你自己產生、從未公開的記號:文字圖層、圖片註解、PDF 便箋裡的隨機 UUID。唯一性讓一次命中才有意義。
- 搜尋流量檢查已擷取的 URL、查詢字串與本文。命中表示在記錄到的對外請求中發現了該標記,還應核對請求狀態;這不證明整個檔案已傳輸。未命中也不能證明沒有檔案資料離開裝置。
- 重複檢查金絲雀只涵蓋你觀察到的工作階段——這就是為什麼定期、重複的封包比一次仔細的手工檢查更重要。
Toolars 公開的關於自己的證據
Toolars 把同樣的方法作為長期公開的工件運轉:每個工具的帶型別處理宣告、帶封包流量的信任中心頁面,以及一份機器可讀的收據——它陳述自己的局限和陳述結果一樣坦率。
- 已揭露的主機信任中心頁面列出了網站頁面殼可達的每個外部主機、隨回應提供的安全標頭,以及可以在同一個網路面板中手工執行的自我驗證步驟。
- 機器可讀收據/privacy-proof/verification-receipt.json 的機器可讀驗證收據公開了驗證命令、各情境的實測結果、已揭露的外部主機,以及用來與網站 X-Toolars-Release 回應標頭比對的發行修訂號。
- 坦白的局限這份收據說它不能證明什麼和它證明了什麼一樣清楚:被測量的視窗只涵蓋那一次執行,而不是對服務未來一切行為的稽核。
公開驗證指令碼設定的 6 個情境
開放儲存庫提供可對正式站點執行的驗證指令碼。檢查僅涵蓋指令碼記錄的請求與測試時段;每次執行的結果與限制應以對應回執為準。
harness 位於公開倉庫 https://github.com/aixtral/toolars-open 的 evidence-harness/ 目錄下。它以 MIT 授權條款發佈,驗證的是已部署的網站——主張真正所指的對象——而不是私人的暫存副本。
- 6 個已設定情境指令碼設定了 6 個情境:圖片轉換與下載、HEIC 轉換、OCR、PDF 旋轉、CSV 資料轉交、自訂工具鏈。設定情境不等於通過測試;須核對回執中的各情境狀態、測量時段與版本修訂號。
- 三條不變量檢查會標記偵測到的上傳、命中的金絲雀標記與非預期跨源請求;已揭露的第一方分析代理另外計數。通過只表示測量時段內這些檢查通過,不代表排除了所有可能的資料傳輸。
- 核對版本儲存庫設定了定期執行的線上擷取工作流程。請檢查最近完成的執行、結果與發版修訂號。網站回執是存檔樣本,不會被該工作流程自動更新。擷取失敗或未完成本身不能證明隱私洩漏。
自己重跑證明
收據的價值與它的可重現性相當。harness 的構建目標是讓任何人都能以線上網站為目標執行它,並把結果寫入一個可以逐行檢查的檔案。
零請求表示記錄器在該測量時段內沒有觀察到請求;另外記錄的預熱流量不在此範圍內。它不能證明擷取通道、版本或本次工作階段之外的行為。
- 複製並驗證複製倉庫,進入 evidence-harness/,安裝它的依賴和 Playwright 的 Chromium,然後以線上網站為目標來源執行 verify 腳本。
- 結束碼就是裁決執行會寫出 privacy-proof-receipt.json;如果有任何意外跨越邊界——帶內文的請求、URL 中的金絲雀、或者不在網站公開名單上的主機——就以非零碼結束。
- 只有中繼資料收據只記錄請求中繼資料——方法、主機、路徑、資源類型、是否帶內文——絕不記錄檔案內容、請求內文或回應內文。
這個方法不能證明什麼
誠實的驗證包含它自己的邊界。知道這些邊界,可以避免把一條乾淨的網路軌跡過度解讀為它從來都不是的保證。
- 一個視窗乾淨的軌跡涵蓋被觀察的工作階段——那一次執行、那個瀏覽器、那個檔案。它不稽核提供商的伺服器、人員或未來的程式碼。
- 你的裝置很重要從你的裝置離開什麼,也取決於你的裝置:被攻陷的瀏覽器、惡意擴充功能或共用設定檔,都可能脫離任何工具架構獨立地搬運資料。
- 常設證據把每個隱私主張——包括本站的主張——都當作會被重複採收的常設證據,而不是終身保證。這正是 harness 按計畫重跑、而不是躺在一次漂亮擷取上的原因。
常見問題
如何檢查網站工具是否上傳我的檔案?
什麼是金絲雀字串?
乾淨的網路追蹤能保證工具注重隱私嗎?
檢視常設證據。
將回執作為目前版本的證據前,請核對測量日期、執行環境及發版綁定狀態。