繁體中文

開發者資料工具包不能做什麼

這裡的每個實用程式都有優勢。此頁面說明了每個停止的位置、原因以及使用什麼替代 - 因此您可以在依賴它之前而不是之後找到答案。

適用於一切事物的約束

所有處理都在一個瀏覽器標籤中進行,並使用裝置的記憶體。這就是隱私權聲明的真實性,也是下面每個大小限制的來源。每個實用程式都明確限制其輸入,並透過明確的訊息拒絕過大的工作,而不是凍結頁面。

有兩個功能需要安全上下文 — https:// 或 localhost — 因為這是瀏覽器公開 Web 加密 API 的唯一位置:SHA 雜湊和 UUID 產生。在 LAN 位址上透過純 HTTP 開啟,兩者都會告訴您它們不可用。兩者都無法取代手寫的實現,因為瀏覽器自己的實作才是值得信任的。

沒有 Service Worker,因此第一個負載需要網路連線。之後,該工具包所做的任何事情都不需要它。

JSON

僅嚴格 RFC 8259。註解、尾隨逗號、單引號字串、不含引號的鍵以及 NaN 或 Infinity 都被拒絕 - 這些是 JSON5 或 JavaScript 物件文字功能,而不是 JSON。驗證器會指出它找到的是哪一個,因此拒絕至少是可行的。

數字被解析為 IEEE-754 雙精度數,這就是 JSON.parse 的作用。超出 2^53 的整數在往返過程中會遺失精確度。如果您正在處理大型標識符,則它們需要是 JSON 本身中的字串 - 任何 JavaScript 工具都無法恢復該格式無法表示的值。

鍵順序保留為書面形式,且可選排序僅適用於物件鍵。數組順序永遠不會改變,因為對數組重新排序會更改資料而不是其表示。

超过 8 百万字符的文件将被拒绝。

語法轉換器

九種定向轉換 - JSON 到 YAML、YAML 到 JSON、JSON 到 XML、XML 到 JSON、JSON 到 TOML、TOML 到 JSON、YAML 到 TOML、TOML 到 YAML、JSON 到 CSV。任何不在該清單中的內容都會被拒絕,並用一句話命名確實存在的路線。全套約定位於轉換器頁面;本節說明轉換停止的位置。

CSV 被寫入但從未被讀取。閱讀它意味著猜測分隔符號、引用方言、標題行和每個單元格的類型——四次猜測轉換器會悄悄出錯。

評論在各個方向、各種格式都會遺失。

YAML 載入了受限架構,只能產生 JSON 形狀的資料。自訂和特定語言的標籤 — !!js/function、!!python/object/apply、!!binary、!!timestamp、!!set、!!omap — 被拒絕。這是經過深思熟慮的:建構這些的載入器是一個任意物件建構函數。

在預設的 JSON 模式下,「~」和空值是字串而不是 null,「yes」是字串「yes」。核心模式選項以大多數人期望的方式解決這些問題。兩者都是安全的;它們在標量解釋上有所不同,並該工具會在選擇時解釋哪個是哪個。兩者都不會將 NO 讀取為 false — 這是 YAML 1.1 行為,這是 YAML 1.2。

多文檔 YAML 流變成文件數組,因為這裡沒有其他格式具有流。錨點和別名被解析而不是保留,遞歸別名被拒絕,並且一旦跟隨其別名就擴展超過一百萬個值的文檔被拒絕 - YAML“十億笑”模式。重複的映射鍵會保留最後一個值,工具也是這麼說的。

YAML 無窮大和 NaN 在任何目標格式中都沒有表示形式。該工具不會讓 JSON.stringify 默默地寫入 null,而是會進行轉換並警告您發生了這種情況。

包含 DOCTYPE 的 XML 文檔會被徹底拒絕,包括無害的文檔,因此無法解析外部實體,也無法擴展實體鏈。沒有選項允許它。 XML 混合內容會遺失文字相對於子元素的位置,無法區分單一重複元素和非重複元素,除非開啟類型推斷,否則每個值都是字串。

TOML 有四種時態類型,而 JSON、YAML 和 XML 沒有。每個都成為其編寫時的 RFC 3339 字串,因此 TOML 往返將這些值更改為字串;不存在無損路徑。 TOML 沒有 null,因此空鍵將從 TOML 輸出中刪除。 TOML 文件的根必須是表,因此 JSON 陣列或標量根本無法成為 TOML。經過 2^53 的整數將變成字串,而不是默默地捨去。

CSV 無法區分空字串和 null。嵌套值被展平為點列名稱,因此已經包含點的鍵會產生一個不明確的名稱,該名稱會被警告而不是被轉義。以 =、+、-、@、製表符或回車符開頭的文字儲存格以撇號為前綴,因為電子表格將它們作為公式執行。

各格式都有輸入上限:JSON 為 8 百萬個字元、XML 為 4 百萬個字元,YAML 和 TOML 為 2 百萬個字元。CSV 輸出上限為 100,000 列與 2,000 欄。

Base64

僅文本。這裡沒有文件上傳:要對文件進行編碼,您需要讀取它,並且該工具包是圍繞文字方塊構建的。為此,請使用以文件為導向的工具。

當位元組是有效的 UTF-8 時,解碼會產生文本,而當位元組無效時,則會報告一個乾淨的錯誤 - 此時位元組視圖將顯示十六進位。任意二進制有效負載不是文本,假裝否則會損壞它。

超過大約 4 百萬個字元的輸入將被拒絕。

URL編碼

提供的三個規則——元件、整個 URL 和表單——是平台定義的三個規則。應用程式特定的變體(AWS SigV4 規範化、OAuth 1.0a 百分比編碼)存在細微差異,因此未提供。

URL 檢查器需要帶有方案的絕對 URL。相對路徑不能分解為主機、路徑和查詢,因為它沒有它們。

國際化網域在瀏覽器標準化時顯示,這可能是 punycode 而不是原始腳本。

HTML 實體

命名實體表涵蓋實用子集 - 標記關鍵字元、版式、貨幣、箭頭、數學、希臘語和拉丁語 - 1 - 並非所有 2,231 HTML5 命名引用。它之外的名字會為您列出,並與所寫的完全一樣,因為發明一個字元比單獨保留文字更糟糕。

需要一個終止分號。 HTML5 可以容忍一些沒有引用的遺留引用,但正確解析這些引用取決於周圍的標記,這是獨立文字工具所不具備的。

解碼是單次傳遞,因此“&amp;lt;”解碼為文字“&lt;”而不是“<”。這是正確的:雙重編碼可能是故意的。

這會將文字轉義為 HTML。它不是 HTML 清理程式——它不會刪除充滿標記的文件並刪除危險部分。這是一項不同且困難得多的工作。

時間戳

單位檢測是一種啟發式:10^11 以上被讀取為毫秒。它始終顯示並且始終可覆蓋,但它是對不明確輸入的猜測。

未偵測到某些資料庫發出的微秒和奈秒時間戳記。先除以 1,000 或 1,000,000。

轉換使用 POSIX 時間,沒有閏秒 — 23:59:60 在這裡不存在,因為它不存在於任何 Unix 時間戳中。

本地時間渲染使用瀏覽器配置的區域。您無法選擇任意 IANA 區域進行渲染。

從紀元開始大約 ±273,790 年的值超出了 JavaScript 日期可以表示的範圍並被拒絕。

UUID

僅產生版本 4(隨機)。版本 1 和 6 需要 MAC 位址和穩定的時脈序列;版本 7 需要一個單調計數器才有價值;版本 3 和 5 是基於名稱的,需要一個命名空間名稱的值,需要一個公開瀏覽器。

驗證器識別規範文字形式並報告版本和變體。它無法告訴您 UUID 是否產生得很好——由弱生成器產生的版本 4 UUID 看起來與好的生成器相同。

批次的上限為 500 值。

沒有網路加密,什麼也不會產生。回退到 Math.random() 將產生可預測的標識符,因此工具會拒絕。

SHA 雜湊值

只有 SHA-1、SHA-256、SHA-384 和 SHA-512,因為這些是 SubtleCrypto 實現的。 MD5 的缺失是出於必然和選擇。

SHA-1 的存在是為了實現遺留互通性,並且在出現的任何地方都被標記為加密損壞。不要將其用於任何安全重要的事情。

僅文字 — 無文件散列,出於同樣的原因,base64 沒有文件輸入。

沒有 HMAC、沒有金鑰派生、沒有密碼雜湊。密码需要缓慢、加盐、难以记忆的函数,例如 Argon2id、scrypt 或 bcrypt;快速通用哈希是错误的工具,使用它是一个严重的错误,而不是一个小错误。

文字差異

僅進行線路級比較。更改的行中沒有單字級或字元級突出顯示。

修改後的行顯示為刪除加添加,這就是基於行的編輯腳本的表示方式。

相同的前導行和尾隨行在比較之前被修剪,因此在一處不同的大檔案速度很快。剩下的內容上限為每側 2,000 條不同的行,超出此範圍該工具會拒絕,而不是嘗試進行會終止選項卡的分配。

沒有三路合併,沒有補丁應用程序,也沒有語法意識。

JWT解碼

僅解碼。簽名永遠不會被驗證,這一點也不會改變——其推理已在代幣指南中闡述。

加密令牌(JWE,五個段落)沒有金鑰就無法解碼。該工具識別出它們並停止。

嵌套標記不會自動解包;單獨解碼內部令牌。

RFC 7519 註冊集之外的聲明將不加解釋地顯示,因為它們的含義是特定於應用程式的。

超過 200,000 字元的令牌將被拒絕。

HTML 所見即所得編輯器

清理器是該編輯器自己的輸出的允許列表,建構在字串標記器而不是完整的 HTML5 解析器上。它不是通用的 XSS 過濾器,將其用作過濾器將是一個錯誤:瀏覽器可以將故意格式錯誤的有效負載解析為與此標記器不同的樹。不受信任的 HTML 屬於針對真實解析器執行的伺服器端清理程式。

只有列出的元素才能生存:段落、標題、強調、列表、連結、引號、程式碼和一些內聯標籤。其他所有內容都已展開,因此其文字保留,而其標籤則不保留。圖片、表格、顏色、字體、行內樣式都沒有,也沒有辦法可以添加。

script、style、iframe、object、embed、form、svg、math 和其他原始文字或外部內容元素及其內部的所有內容都將被刪除。

連結可以使用 http、https、mailto、tel、ftp 或相對位址。其他任何內容(包括 javascript:、data: 和 blob:)都會被拒絕,包含此工具實體表之外的字元引用的位址也是如此。

編輯介面使用document.execCommand。它已被棄用,它的替代品未在任何瀏覽器中實現,並且引擎之間的行為有所不同,特別是對於嵌套列表。來源模式是指令執行錯誤操作時的逃生口。

超過 500,000 字元的文檔將被拒絕。

chmod計算器

僅 12 個權限位:所有者、群組和其他的讀取、寫入和執行,以及 setuid、setgid 和黏性。存取控制清單、擴充屬性、SELinux 上下文、功能和 Windows ACL 都超出了模式所能表達的範圍。

它所建構的命令是供您複製的文字。不會執行任何操作,也不會讀取或更改計算機上的任何文件 - 路徑字段的存在只是為了填寫命令。

它不計算 umask 算術,並且不知道給定文件目前具有什麼模式,因為網頁無法看到您的文件系統。

Docker運行來撰寫

一個 docker run 指令成為一項服務。多容器設定必須透過轉換每個命令並自行合併結果來組裝。

--mount、--gpus、--device、--link、--volumes-from、--network-alias 和其他十幾個標誌沒有此轉換器將寫入的等效標誌。每個都會產生一個警告,命名該標誌而不是消失。

轉換器無法識別的標誌將被視為沒有值,並在警告中如此說明。如果確實需要一個,則該值會被誤讀 - 刪除該標誌並手動新增其效果。

沒有執行、評估或傳遞給 shell 的任何內容:命令由理解引用的分詞器分割,而不是其他任何內容。因此,轉換器無法擴展 $VARIABLES、解析 $(subshel​​ls) 或讀取 --env-file,因為這三者都意味著要執行某些內容或開啟檔案。

檢查輸出的 YAML 引用是否正確,但未根據 Compose 規範進行驗證,並且不會聯繫任何映像來確認其存在。

透過 100,000 字元的命令將被拒絕。

定時任務產生器

僅五個字段 crontab 語法。六字段 Quartz 和 systemd 表達式被拒絕並給出解釋,非標準運算符 L、W、# 和 ? 以及 @reboot 也被拒絕,沒有預覽時間表。

當月份和星期幾字段都受到限制時,將使用 OR 組合,以匹配 Vixie cron。只要適用,工具就會發出警告,因為這是 cron 行最常見的誤讀。

下次運行時間來自瀏覽器的國際時區資料。它們是預覽,而不是承諾:運行 cron 的機器可能使用不同的區域、不同的 tzdata 版本,或者可能當時根本沒有運行。

預覽搜尋提前五年。比這更罕見的時間表(例如 29 二月)將顯示少於五次運行。

你貼的內容會發生什麼

  • 每個轉換、哈希、解碼和差異都在您的瀏覽器標籤中運行。不會在伺服器上傳、記錄或儲存任何輸入,因為頁面載入後就不再涉及伺服器。
  • 雜湊值來自瀏覽器自己的 Web Crypto 實現,UUID 來自其加密安全隨機產生器。兩者都不涉及網絡調用。
  • 您鍵入的任何內容都不會寫入本機儲存或 cookie。重新載入頁面會丟棄它;關閉選項卡將丟棄它。
  • 站點範圍的分析僅在配置的規範生產主機上運行,並在隱私權政策中披露;本地和預覽主機拒絕它。貼上的值、令牌、URL 和文件內容不包括在 ToolAcre 自己的分析事件中。目前配置中停用廣告。
  • 也就是說:JWT 或 API 金鑰是即時憑證。安全的習慣是永遠不要將其粘貼到不是您編寫的網頁中,無論其聲明多麼可信 - 包括這個。

問題

您會新增檔案上傳以進行雜湊或 Base64 嗎?

有可能,但它是一种不同类型的工具——文件读取、进度报告、大文件的内存保护——而不是文本框的一个小补充。今天答案是否定的。

你們會在 JWT 解碼器中加入簽名驗證嗎?

不需要。驗證需要發行者的金鑰和固定在令牌外部的演算法,而要求其中任何一個的網頁都要求具有偽造令牌的能力。限制就是功能。

為什麼要拒絕大量輸入而不是只緩慢輸入?

因為瀏覽器標籤中的「慢」意味著頁面無回應,而在手機上,這通常意味著選項卡被終止並且您的輸入消失了。帶有明確限制的明確拒絕比永不停歇的旋轉更有用。

我可以離線使用嗎?

頁面加載後,是的 - 該工具包所做的任何事情都不需要網路。沒有 Service Worker,因此第一次載入確實需要連線。

限制

  • 此頁面本身就是限制清單;上述每一節都說明了一個實用程式不能執行的操作。
  • 限制在程式碼中強制執行並在介面中報告,而不僅僅是在此處記錄。