开发者数据工具包 — 问题
该工具包如何处理您的数据,哪些实用程序是准确的,以及每个实用程序故意停止的位置。
简短版本
这里的每个实用程序都在您的浏览器选项卡中运行。 ToolAcre 应用程序服务器不会上传或存储您粘贴的任何内容。站点范围的分析仅在配置的规范生产主机上运行,并在隐私政策中披露;粘贴的值被排除在 ToolAcre 自己的分析事件之外。
以下问题决定您是否可以信任特定结果。如果实用程序是准确的,它就会这样说;在它接近或拒绝的地方,它也这么说。
你粘贴的内容会发生什么
- 每个转换、哈希、解码和差异都在您的浏览器选项卡中运行。不会在服务器上上传、记录或存储任何输入,因为页面加载后就不再涉及服务器。
- 哈希值来自浏览器自己的 Web Crypto 实现,UUID 来自其加密安全随机生成器。两者都不涉及网络调用。
- 您键入的任何内容都不会写入本地存储或 cookie。重新加载页面会丢弃它;关闭选项卡将丢弃它。
- 站点范围的分析仅在配置的规范生产主机上运行,并在隐私政策中披露;本地和预览主机拒绝它。粘贴的值、令牌、URL 和文件内容不包括在 ToolAcre 自己的分析事件中。当前配置中禁用广告。
- 也就是说:JWT 或 API 密钥是实时凭证。安全的习惯是永远不要将其粘贴到不是您编写的网页中,无论其声明多么可信 - 包括这个。
问题
我粘贴的东西上传了吗?
没有 ToolAcre 上传收到它。每次转换、哈希、解码和差异都发生在您的浏览器中。站点范围的分析仅限于配置的规范生产主机并在隐私政策中披露;粘贴的值、令牌、URL 和文件内容不包括在 ToolAcre 自己的分析事件中。
两次访问之间是否存储了任何内容?
不会。该工具包不会向 localStorage、sessionStorage、IndexedDB 或 cookies 写入任何内容。重新加载页面会清除您输入的所有内容;关闭选项卡的效果相同。没有帐户系统,因此无需注册,也无需删除。
这里的base64可以处理表情符号和非英文文本吗?
是的,完全正确。文本在编码之前被转换为 UTF-8 bytes 并使用严格的解码器解码回来,因此表情符号、CJK、阿拉伯语、组合标记和 ZWJ 序列都是逐字节往返的。这是浏览器内置 btoa() 出错的具体问题 - 它会抛出一些字符并默默地为其他字符生成错误的字节。
JSON验证器如何找到错误位置?
使用自己的扫描仪,而不是读取引擎的错误消息。浏览器 JSON 错误文本是特定于引擎的,当前的 V8 完全忽略了某些故障的位置。扫描仪扫描文档并报告第一个不是有效 JSON 的偏移量,并附上为人类编写的原因(尾随逗号、单引号字符串、未终止的字符串)以及有问题的行和插入符号。
支持哪些 YAML 功能?
标准 YAML 1.2 结构,使用受限模式读取,只能生成 JSON 形状的数据:字符串、数字、布尔值、null、序列和映射。构造任意对象的标签将被拒绝。您可以在 JSON 模式(最严格)和核心模式(也将 ~ 和空值解析为 null、十六进制整数和 .inf / .nan)之间进行选择。
为什么我的 YAML 文件失败并显示“未知标签”?
因为它使用自定义或特定于语言的标签,例如 !!js/function、!!python/object/apply、!!binary 或 !!timestamp。配置为构造这些的加载器是一个任意对象构造函数,在多种语言中它是一个远程代码执行错误类。该工具在设计上拒绝它们,而不是例外。
哈希值正确吗?
它们是由浏览器自己的 Web Crypto 实现计算的,测试套件根据已发布的向量检查它们 - “abc”的 SHA-256 是 ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad 和 SHA-1, SHA-384 和 SHA-512 向量与空字符串摘要一起检查。
为什么 SHA-1 被标记为损坏?
因为它是。 2017 (SHAttered) 中发布了一个实际的冲突,而选择前缀冲突(破坏签名和证书的变体)在 2020 中变得可以承受。它包含在内,因此您可以重现现有的 SHA-1 值,例如 git 对象 ID 和旧版 API 签名,这与依赖它是不同的。
UUID 从哪里来?
来自 crypto.randomUUID() 或 crypto.getRandomValues(),其中 randomUUID 不可用。两者都是浏览器的加密安全生成器。 Math.random() 从未被使用:它的内部状态可以从短期输出中恢复,这使得从它构建的任何东西都是可预测的。如果不存在安全源,该工具将拒绝生成而不是悄悄降级。
JWT 解码器是否验证签名?
不会。它会解码标头和有效负载并向您显示它们所声明的内容。它不检查签名,因此它显示的任何内容都无法证明令牌是真实的、未被更改的或由其指定的任何人颁发的。验证需要发行者的密钥和固定算法,它们属于信任令牌的系统,而不是网页。
我可以粘贴真实的访问令牌吗?
你可以,但你不应该——在这里或其他任何地方。活动令牌是一种凭证:无论谁持有它,都可以充当您的角色,直到它过期。该页面在本地解码并且不发送任何内容,但这是一个您无法在任何网站上一眼就验证的声明,因此安全习惯是过期或测试令牌。如果您已经将其粘贴到某处,请旋转它。
文本差异如何工作?
它计算最长公共子序列编辑脚本,该脚本给出最少的添加和删除集,而不是简单的逐行比较。相同的前导行和尾随行首先被修剪,因此比较两个在一处不同的大文件速度很快。
为什么 diff 拒绝非常大的输入?
LCS 算法需要的时间和内存与两个长度的乘积成正比。超过几千个不同的行成为浏览器选项卡不应尝试的分配,因此该工具明确拒绝并建议比较较小的区域。共享大部分内容的文件会首先被修剪,并且无论总大小如何,都可以保持快速。
时间戳单位检测可靠吗?
这是一种记录在案的启发式方法,而且从来都不是沉默的。任何等于或大于 10^11 的时间都被视为毫秒,因为 10^11 秒是年份 5138,而 10^11 毫秒是 1973。实际使用的单位始终与结果一起显示,您可以覆盖它。
该工具包可以离线使用吗?
一旦页面加载完毕,是的——它所做的一切都不需要网络。没有 Service Worker,因此初始负载仍然需要连接。
它可以在手机上使用吗?
是的。布局从 320 CSS 像素向上工作,表单文本为 16px,因此移动 Safari 不会缩放焦点,并且控件满足 44 像素触摸目标最小值。编辑器和输出在各自的框中滚动,因此一长行缩小的 JSON 永远不会使页面变宽。
HTML 编辑器的清理程序可以安全地用于不受信任的输入吗?
不,专家组也是这么说的。它是编辑器自己的输出的白名单:固定列表之外的元素和属性将被删除,事件处理程序无法生存,因为除非列出,否则没有属性可以生存,并且仅保留 http、https、mailto、tel、ftp 和相关链接。这使得该编辑器发出的内容可以安全地粘贴到您控制的页面中。它不是通用的 XSS 过滤器——它是一个字符串标记器,而不是 HTML5 解析器,因此原则上浏览器可以以不同的方式解析恶意负载。预览是一个没有允许脚本的沙盒 iframe,因此无论如何都无法执行任何内容。
为什么 chmod 计算器有时会显示大写的 S 和 T?
因为特殊位已设置,而匹配的执行位未设置。 4755是rwsr-xr-x,一个可以运行的setuid程序; 4644 是 rwSr--r--,一个没有人可以执行的 setuid 文件,这几乎总是一个错误。大写字母是系统告诉您该位没有任何可操作的内容,而显示小写 s 的计算器将隐藏您需要查看的一件事。
docker 转换器是否运行过我粘贴的命令?
不会。它使用可识别引号的分词器分割字符串并读取各个片段。代码库中的任何位置都没有 eval、shell 和子进程。反引号、$(...) 和分号保留原义字符。它无法转换的任何标志都会在可见警告中命名,而不是被删除,因为默默地执行少于其来自的命令的撰写文件是该工具可能产生的最糟糕的结果。
为什么 cron 预览时间与我的服务器不匹配?
通常时区:cron 使用它运行的机器的区域,预览使用您选择的区域,因此将其设置为您的服务器的区域。另一个可能的原因是日期规则 - 当设置了每月的某一天和每周的某一天时,cron 会在其中任何一个匹配时运行,其触发频率比大多数人预期的要高。当这种情况发生时,生成器会发出警告。
有广告或分析吗?
当前配置中禁用广告。站点范围的分析仅在配置的规范生产主机上运行,并在隐私政策中披露;粘贴的值、令牌、URL 和文件内容不包括在 ToolAcre 自己的分析事件中。
局限性
- 一切都在一个浏览器选项卡中运行,因此每个实用程序都受设备内存的限制。每个都有明确的输入上限,拒绝超大工作而不是冻结。
- 哈希和 UUID 生成需要安全上下文(https:// 或 localhost),因为这是浏览器公开 Web Crypto 的地方。
- JWT 解码器从不验证签名,加密的 JWE 令牌根本无法解码。
- YAML 使用纯数据模式读取;依赖自定义标签的文档在设计上会被拒绝。
- HTML 实体表涵盖实际子集而不是所有 2,231 HTML5 命名引用,并且报告未知名称而不是猜测。
- diff 比较整行。更改的行中没有单词级或字符级突出显示。
- HTML 编辑器的清理程序是其自身输出的允许列表,而不是用于不受信任输入的通用 XSS 过滤器,并且它没有图像、表格或样式。
- docker 转换器一次处理一个 docker run 命令,并命名它无法代表的每个标志,而不是删除它。
- cron 生成器仅读取五字段 crontab 语法,其下次运行时间是基于浏览器时区数据的预览,而不是对服务器的保证。