多年的 WordPress 外掛支援教會了我一個壞習慣。客戶向您發送一個損壞的序列化選項 blob,您需要閱讀它 現在(所以你把它貼到谷歌給你的第一個線上解序列器中)。我花了很長時間才想到這一點 - 直到那天我查看了 I'd 剛剛貼的內容。它是一個客戶's wp_options 導出。它包含他們的 SMTP 密碼、Mailchimp API 金鑰和許可證金鑰。所有這些都剛剛發佈到一個我一無所知的伺服器,由我無法運行的人運行't name,在一個我無法運行的國家/地區't猜測。
據我所知,沒有發生任何不好的事情。那'這是令人不安的部分 - 我無法知道。那裡'沒有通知"你的貼已被記錄。"資料要麼位於某人'存取日誌,要麼不存取't,以及I'永遠不會知道是哪一個。
該事件是 toolz。dev 如此運作的一個重要原因。網站上的 50 個工具中的每一個都會處理您在瀏覽器中的輸入。不&引用;我們承諾在處理和引用後將其刪除; - 它從一開始就永遠不會被傳輸。本指南解釋了這兩種架構之間的差異,為什麼它對開發人員來說比幾乎任何人都更重要,以及如何驗證工具和#39;大約 30 秒內聲明自己。而且,由於我最終確實將客戶斑點貼到了安全的地方,所以 PHP 取消序列化器 這取代了我的壞習慣。
TL;DR: 伺服器端工具將您的輸入傳輸給其他人'機器,可以記錄、保留、破壞或共享 - 您可以'驗證其中的任何內容。客戶端工具向您運送程式碼並在本地處理所有內容;驗證需要 DevTools Network 選項卡檢查。對於任何包含憑證的內容 - JWT,
wp-config值、連接字串、API 回應 - 使用客戶端工具,例如 json 格式化程式, 中國航空解碼器, SQL 格式化程式, 和 yaml 驗證器. 一切都開啟 工具。dev 在瀏覽器中運行。
當您貼上到線上工具時實際上會發生什麼?
恰好有兩種架構,每個線上工具都使用其中一種。
伺服器端: 您的輸入從瀏覽器傳輸到工具'伺服器,在那裡進行處理,結果返回。五個步驟,您的資料存在於其他人身上'其中三個步驟中的基礎設施。
Your browser → network → their server → network → your browser
(input) (transit) (processing, (transit) (result)
logging?,
retention?)
客戶端: 您的瀏覽器下載工具'一次 JavaScript,然後所有內容(輸入、處理、輸出)都會發生在您電腦的標籤中。唯一穿過網路的是程式碼。
Their server → your browser
(code) (input + processing + result, all local)
這種區別聽起來很學術,直到您列出您所擁有的伺服器上的資料會發生什麼't 控制。它可以落在存取日誌和應用程式日誌中。它可以被 Sentry 等錯誤追蹤器捕獲,當有東西拋出時,這些錯誤追蹤器會請求上下文。它可以在操作員"刪除&引用後很長時間保留在備份中。它可以被任何具有日誌存取權限的員工讀取。它可以被清掃到一個缺口中。並且使用多個"免費工具和報價;操作員,它可以是實際產品 - 透過分析貨幣化或作為培訓資料出售。
這些都不需要惡意。預設日誌記錄配置可以單獨完成大部分工作。我使用的解序列器的操作員可能從未查看過我的客戶's SMTP 密碼。但是&引用;可能&引用;不是一種安全姿態。
為什麼這對開發商來說比其他任何人都更重要?
因為我們貼的東西。一般使用者將一段文字貼到文字計數器中。開發人員貼上:
使用即時令牌進行 API 回應。 你'在調試整合時,您複製整個回應(包括標頭)並對其進行格式化以讀取它。那 Authorization: Bearer ... 標頭就位於格式化程式所在的任何位置。 GitGuardian's 秘密蔓延的狀態 研究發現,光是 2023 年,GitHub 就公開承諾了約 1,280 萬個秘密。沒有人發布線上工具的同等數字,因為與 GitHub 不同,工具操作員'日誌已公開掃描。 That'並不令人放心 - 這意味著洩漏表面是不可見的。
JWT。 JSON Web 令牌是基於 64url 編碼的,而不是加密的 - RFC 7519 對此是明確的。您貼上到伺服器端解碼器中的每個令牌的有效負載都會移交給使用者' ID、電子郵件、角色和到期。如果令牌仍然有效,you've 可能會交出工作會話憑證。使用本地解碼它們 中國航空解碼器 相反。
SQL 中包含真實資料。 查詢 you're 格式化有一個 WHERE email = '[email protected]' 其中子句和表格名稱勾勒出您的整個模式。這 SQL 格式化程式 將其保留在您的選項卡中。
配置文件。 wp-config.php 價值觀, .env 內容,kubernetes 顯現, database.yml- 配置是憑證所在的位置。 I'驗證了包含我的 Laravel 應用程式的所有秘密的 YAML 檔案。 That'這是您想要瀏覽客戶端的貼上 yaml 驗證器,不是表格貼文。
序列化的 WordPress 資料。 根據介紹,我個人的失敗。 WordPress 將選項和元資料儲存為 PHP 序列化字串,調試它們意味著取消序列化它們 - PHP 取消序列化器 無需您的客戶即可完成此操作's 資料離開您的機器。
這些類別中任何一個粗心的貼上都是沒有人會偵測、報告或清理的安全事件。
如何驗證工具實際上是客戶端?
這是我最喜歡客戶端架構的部分: 您不知道'不必信任任何人'的隱私權政策。 該聲明是機械可驗證的。
- 打開工具和#39;s 頁面。
- 打開 DevTools (F12) → 網路 選項卡。檢查和報價;保留日誌。&報價;
- 貼上一些可識別的測試數據 -
MY-SECRET-TEST-12345工作 - 並運行該工具。 - 觀看請求清單。
如果工具是客戶端的,you'將看到初始頁面載入和靜態資產,然後 什麼都沒有 當你處理時。如果您按下轉換/格式/進程按鈕時觸發請求,請過濾請求並檢查測試字串的有效負載。找到了嗎?伺服器端。完成了 - 這花了半分鐘,您現在對該工具的了解比其隱私權政策告訴您的要多。
關於 toolz。dev 的兩個誠實註釋,因為這是雙向的。首先,該網站確實加載頁面瀏覽計數分析並進行追蹤 那個 使用了一個工具 - 用於使用限制 - 但從未使用過 什麼 你把它放進去。自己運行網路檢查;輸入永遠不會出現在任何請求中。其次,客戶端有一個真正的限制:您的瀏覽器可以完成工作,因此 4 GB 視訊轉碼是 't 發生在選項卡中。不過,對於格式化程式/轉換器/編碼器工具類別,現代 JavaScript 的速度足夠快 - 通常比伺服器端快,因為那裡'根本沒有上傳往返。
伺服器端與客戶端:直接比較
| 伺服器端工具 | 客戶端工具 | |
|---|---|---|
| 處理發生的地方 | 操作員's 伺服器 | 你的瀏覽器 |
| 資料傳輸? | 是的,每次 | 不 - 僅工具's 代碼已下載 |
| 可由操作員記錄/保留 | 是的,通常是預設的 | 不 - 操作員永遠不會收到它 |
| 暴露在該工具的缺口中 | 是的,如果保留的話 | 不 |
| 可由您驗證 | 不--你相信這個政策 | 是的 - DevTools 網路選項卡,~30 秒 |
| 需要 GDPR 處理器協定 | 是的,如果是個人資料(第 28 條) | 不發生第三方的處理 |
| 載入後離線工作 | 不 | 通常是的 |
| 典型開發任務的速度 | 上傳+隊列+下載 | 即時 - 無網路往返 |
| 重計算(影片、大檔案) | 更適合 | 受您的設備限制 |
GDPR 對此有何評論?
I'我是開發人員,而不是律師,因此將其視為工程背景而不是法律建議 - 但對於任何處理歐盟用戶資料的人來說,大綱都很重要。
下 法規(歐盟)2016/679 (GDPR),如果您取得個人資料 - 客戶'支援匯出、帶有使用者記錄的 API 回應 - 並將其推送至第三方' server,該第三方正在代表您處理個人資料。第 28 條規定需要資料處理協議。問問自己有多少免費的線上格式化程式提供 DPA。我從來沒有見過。
客戶端工具迴避了整個問題,不是透過巧妙的法律起草,而是透過架構:沒有資料到達提供者,因此沒有第三方處理可以掩蓋。資料最小化(第 5 (1) (c) 條)以盡可能最字面的方式滿足 - 提供者收集的資料量為零。相同的邏輯有助於 HIPAA(健康資料永遠不會到達不合規的伺服器)、SOC 2 審核(資料路徑中沒有未經審查的子處理器)和 PCI DSS。
需要明確的是:使用客戶端工具不會't make 您的產品 符合 GDPR。它消除了開發工作流程中一個特定且令人驚訝的常見洩漏 - 開發人員試圖在支援票證上提供幫助,將個人資料貼上到隨機網站中的洩漏。
哪些任務永遠不應該觸碰伺服器?
我個人的分類,依洩漏造成的傷害排序:
切勿在伺服器端 - 包含或暗示憑證:
- 格式化 API 回應和有效負載: json 格式化程式
- 解碼令牌: 中國航空解碼器, Base64 轉換器
- 格式化查詢: SQL 格式化程式
- 驗證配置: yaml 驗證器
- 調試 WordPress 資料: PHP 取消序列化器
- 散列和比較值: 哈希產生器
- 產生憑證: 密碼產生器, uuid 生成器
強烈喜歡客戶端 - 專有但不是秘密:
風險低,但客戶端仍然更快:
- 字數: 字計數器
- 佔位符文字: lorem ipsum 發電機
- 顏色和漸變: 選色器, 梯度產生器
There'是完整工具箱的較長演練 開發人員生產力工具指南 和 編碼工具指南.
如果您確實需要伺服器端工具 - 大量轉換,沒有本地替代方案 - 首先進行清理。交換真實密鑰 YOUR_API_KEY,真實的電子郵件 [email protected]. It' 60 秒的尋找和替換,將潛在事件變成非事件。
為什麼大多數線上工具都是伺服器端?
部分歷史,部分激勵。 2010 年,瀏覽器是 't up to the job - 必須在伺服器上進行大量處理。這個限制已經消失:現代 JavaScript 引擎和 WebAssembly 以與本機無法區分的速度處理格式化、轉換、雜湊和映像壓縮,瀏覽器 API(檔案、畫布、Web 加密)覆蓋 I/O。
激勵措施是更棘手的問題。伺服器端處理讓操作員詳細了解使用情況,精確地執行限制,保持處理邏輯專有,並且在最壞的情況下將資料本身視為收入。一個永遠不會接收您的資料的工具可以't 將您的資料貨幣化,這正是為什麼一些操作員會選擇't want the architecture,即使它'現在技術上很容易。
當我為 toolz。dev 建立工具時,客戶端實際上是 更簡單 工程選擇,而不僅僅是更私密的選擇:沒有可擴展的處理伺服器,沒有可安全的上傳,沒有可編寫的保留策略,並且每個工具在web 應用程式和桌面應用程式中都工作相同,因為邏輯與平台無關的TypeScript。隱私故事和工程故事指向相同的方向。 It'這種情況發生時很少見;取得勝利。
常見問題
"客戶端處理和報價是什麼?實際上意味著?
所有計算都在您的瀏覽器、JavaScript(或 WebAssembly)中的裝置上進行。伺服器'唯一的角色是傳送工具'頁面載入時的程式碼。您的輸入永遠不會出現在任何網路請求中,您可以在 DevTools Network 標籤中確認。
如何檢查工具是否為客戶端?
開啟 DevTools (F12) → 網路選項卡,啟用 "保留日誌,"將可識別的測試資料貼上到工具中並對其進行處理。如果沒有包含測試字串的請求觸發,則該工具是客戶端。在 Chrome 上,您也可以將 DevTools 切換到 "離線和引用;頁面載入後 - 真正的客戶端工具繼續運作。
客戶端工具是否比伺服器端工具慢?
對於典型的開發人員任務,它們'速度更快 - #39;沒有上傳、沒有佇列、沒有下載。在本地處理 2 MB JSON 檔案幾乎是即時的,而伺服器往返會在每一步增加延遲。例外的是繁重的計算(大型視訊轉碼、千兆位元組大小的檔案),其中強大的伺服器會擊敗瀏覽器標籤。
toolz。dev 收集什麼東西嗎?
頁面瀏覽分析和每個工具的匿名使用量很重要(用於速率限制) - 但絕不會計算您處理的內容。輸入、輸出和上傳的檔案保留在您的瀏覽器中。這可以透過網路選項卡檢查來驗證,而不是你必須相信的東西。
將 JWT 貼到線上解碼器中真的有風險嗎?
是的,比大多數開發人員想像的要多。根據 RFC 7519,JWT 有效負載是編碼的,而不是加密的 - 任何持有令牌的人都可以讀取聲明,如果令牌已經't 過期,它可能可以用作即時憑證。將一個貼上到伺服器端解碼器中,會將可能有效的會話令牌傳輸到未知的第三方。使用客戶端解碼器。
使用客戶端工具是否使我符合 GDPR?
沒有任何一種工具選擇可以讓您合規。客戶端工具消除的是一個特定的風險:您的系統中的個人資料到達未經審查的第三方處理者(這幾乎肯定需要您簽署第28 條資料處理協議#39;沒有免費的工具網站)。您自己的產品和#39;的義務不受影響。
我的雇主能看到我在客戶端工具中處理什麼嗎?
網路監控可以查看您造訪的網站,而不是您在客戶端工具中輸入的內容 - there'沒有攜帶您的輸入來觀察的請求。安裝在設備本身的端點監控(螢幕擷取、鍵盤記錄器)可以查看所有內容,無論工具架構如何,因此誠實的答案是:不是透過網絡,可能是透過端點。
如果那裡'沒有客戶端替代方案來完成我的任務怎麼辦?
貼上前進行消毒:將憑證替換為佔位符 (YOUR_API_KEY),將真實個人資料替換為虛擬值、剝離主機名稱和內部 URL。然後檢查工具和#39;記錄和保留語言的隱私權政策,更喜歡您可以檢查、處理和引用的開源工具;免費、閉源、伺服器端"作為風險最高的組合。
客戶端工具和伺服器端工具有什麼不同?
客戶端工具將程式碼運送到您的瀏覽器並在那裡運行;伺服器端工具將您的資料傳送到您擁有的機器並#39;控制並在那裡運行它。從功能上講,輸出可以是相同的 - 差異完全取決於誰最終保存您的輸入。使用伺服器端工具,您的資料無論多麼簡短地存在於其他人身上'磁碟、日誌和備份中。
線上 JSON 格式化程式和美化器可以安全使用嗎?
這取決於實現,而不是類別。在 JavaScript 中格式化 JSON 是一件小事,因此客戶端格式化程式沒有理由傳輸任何內容 - 網路選項卡檢查會在 10 秒內解決它。這裡比平常更小心,因為 JSON 開發人員貼上到格式化程式中的 API 回應不成比例地包含令牌、電子郵件地址和內部 ID。



