WordPress插件支持多年,让我养成了个坏习惯,一个客户给你发了一个破碎的序列化选项blob,你需要阅读它 现在么, 所以你把它粘贴到谷歌给你的第一个在线非序列化程序中, 我这样做了很长时间, 没有考虑 - 直到我看I'd刚刚粘贴的那一天, 它是一个客户's wp_options export。it包含他们的smtp密码,一个mailchimp API密钥,还有一个许可证密钥,所有内容都刚刚被POST到一个我一无所知的服务器,由一个我不能't的人运行的名字,在一个我不能't猜测的国家。
据我所知,没有发生任何不好的事情。那's令人不安的部分 - 我无法知道。那里's没有通知"你的粘贴被记录了。"数据要么坐在某人's访问日志中,要么没有't,而I'll永远不会发现哪个。
that 事件是为什么 toolz。dev 按照它的方式工作的一个重要部分,站点上的 50 个工具中的每一个都会在浏览器中处理您的输入。不是"我们承诺我们会在处理后删除它"- 它从一开始就不会被传输。本指南解释了这两种架构之间的区别,为什么它对开发人员比几乎其他人更重要,以及如何验证工具's声称自己在大约 30 秒内。而且,由于我最终确实将客户 blob 粘贴到安全的地方 PHP 序列化器 这取代了我的坏习惯。
TL;博士: Server-side工具将您的输入传输给其他人's机器,在那里它可以被记录,保留,破坏或共享-并且您可以't验证其中任何一个客户端工具将代码运送给您并在本地处理所有内容;验证需要一个DevTools网络选项卡检查。对于任何包含凭据的东西 - JWTs,
wp-config值、连接字符串、API 响应 - 使用客户端工具,例如 json格式化程序、 jwt解码器、 SQL格式化程序、和 YAML 验证器.一切都开启 Toolz.dev 在浏览器中运行。
当您粘贴到在线工具时实际会发生什么?
恰好有两种架构,每个在线工具都使用其中一种。
服务器端: 输入从浏览器传输到工具's服务器,在那里进行处理,结果返回。五个步骤,并且您的数据存在于其他's基础设施上,其中三个步骤。
Your browser → network → their server → network → your browser
(input) (transit) (processing, (transit) (result)
logging?,
retention?)
客户端: 您的浏览器下载一次该工具's JavaScript,然后所有内容 - 输入、处理、输出 - 都发生在您机器上的一个选项卡中。唯一跨越网络的是代码。
Their server → your browser
(code) (input + processing + result, all local)
区分听起来很学术,直到你列出你不具备的服务器上的数据会发生什么't控制。它可以登陆访问日志和应用程序日志。它可以被错误跟踪器捕获,如Sentry,当某物抛出时,快照请求上下文。它可以在操作员"删除"它之后很长一段时间内保留在备份中。它可以被任何具有日志访问权限的员工读取。它可以在漏洞中被扫除。并且使用几个"免费工具"操作员,它可以是实际产品-通过分析货币化或作为培训数据出售。
这些都不需要恶意,仅凭默认日志配置就能完成大部分工作,我使用的那个非序列化器的操作员可能从来没有看过我的客户's SMTP密码。但是"可能"不是安全姿势。
为什么这对开发人员来说比其他任何人都更优惠?
因为我们粘贴的东西。一般用户将一段文字粘贴到单词计数器中。开发人员粘贴:
API 响应与活代币。 You're调试一个集成,你复制整个响应- 包括标头- 并格式化它来读取它。那 Authorization: Bearer ... header 只是去了格式化程序所住的地方 GitGuardian's 秘密状态蔓延 研究发现,仅 2023 年,就有约 1280 万个秘密在 GitHub 公开提交中泄露。没有人发布在线工具的等效数字,因为与 GitHub 不同,工具操作员'日志是't 公开可扫描的。那's 不令人放心 - 这意味着泄漏表面是不可见的。
JWT。 JSON Web 令牌是 base64url 编码的,而不是加密的 - RFC 7519 is explicit about this。net你粘贴到服务器端解码器中的每个令牌的有效负载都将用户's ID、电子邮件、角色和过期交出。如果令牌仍然有效,你've可能将工作会话凭据在本地解码 jwt解码器 相反。
SQL,其中包含真实数据。 You're格式化的查询有a WHERE email = '[email protected]' 其中有子句,表名勾勒出你的整个模式。 SQL格式化程序 将其保留在您的选项卡中。
配置文件。 wp-config.php 价值观, .env 内容,kubernetes 表现, database.yml-配置是凭据所在的地方。I've 验证了 YAML 文件,其中包含我的 Laravel 应用程序的每个秘密。那's 是您想要通过客户端的粘贴 YAML 验证器的,而不是形式POST。
序列化 WordPress 数据。 我的个人垮台,根据介绍。 WordPress 将选项和元数据存储为 PHP 序列化的字符串,调试它们意味着取消序列化它们 - PHP 序列化器 在没有客户's数据离开您的机器的情况下进行。
这些类别中任何一个不小心粘贴的粘贴都是一个安全事件,没有人会检测、报告或清理。
如何验证工具实际上是客户端?
这是我最喜欢客户端架构的部分: 你不'不必相信任何人'的隐私政策。 该索赔是可以机械验证的。
- 打开工具's页面。
- 打开 DevTools (F12) → 网络 tab。检查"保留日志。"
- Paste 在一些可识别的测试数据中 -
MY-SECRET-TEST-12345工作 - 并运行该工具。 - 观看请求列表。
如果工具是客户端,您'll看到初始页面加载和静态资产,然后 没什么 process的时候。如果一个请求在你点击转换/格式/进程按钮时发生火灾,请过滤请求并检查测试字符串的有效负载。找到它?服务器端。完成-那花了半分钟,你现在对那个工具的了解比它的隐私政策告诉你的还要多。
Toolz。dev的两个诚实笔记,因为这可以双向切割首先,网站会为页面视图计数进行加载分析,并且会进行跟踪 那个 使用了一个工具--用于使用限制--但从未使用过 什么 network check你投入进去。自己运行网络检查;输入从来不会出现在任何请求中。其次,客户端有一个真正的限制:你的浏览器做工作,所以一个4 GB的视频转码是't发生在一个选项卡中的格式化程序/转换器/编码器类别的工具,虽然,现代JavaScript的速度足够快- 通常比服务器端快,因为那里's根本没有上传往返。
服务器端与客户端:直接比较
| 服务器端工具 | 客户端工具 | |
|---|---|---|
| 处理发生的地方 | Operator's 服务器 | 您的浏览器 |
| 数据传输? | 是的,每次 | No - 只下载工具's代码 |
| 操作员可以记录/保留 | 是的,通常是默认的 | 不--操作员永远不会收到它 |
| 暴露在工具的缺口中 | 是的,如果保留的话 | 否 |
| 可由您验证 | 不--你相信这个政策 | 是 - DevTools 网络选项卡,~30 秒 |
| GDPR 处理器协议所需要 | 是的,如果是个人数据(第 28 条) | 第三方不进行任何处理 |
| 负载后离线工作 | 否 | 常是的 |
| 典型 dev 任务的速度 | 上传+队列+下载 | 即时 - 无网络往返 |
| 重计算(视频、庞大文件) | 更适合 | 受您设备的限制 |
GDPR 对此有何评价?
I'm是开发人员,而不是律师,因此将其视为工程背景而不是法律建议 - 但大纲对于任何处理欧盟用户数据的人来说都很重要。
下 (EU) 2016/679 法规 (GDPR),如果你拿个人资料- 一个客户's support export,一个带有用户记录的API响应- 推送通过第三方's server,那个第三方在代表你处理个人资料,第28条说需要数据处理协议,问问自己有多少免费的在线格式化程序提供一个DPA,我从来没有见过。
Client-side工具回避了整个问题,不是通过巧妙的法律起草而是通过架构:没有数据到达提供商,因此没有第三方处理来纸张化。数据最小化(第5(1)(c)条)以尽可能最字面的方式得到满足 - 提供商收集的数据量为零。相同的逻辑有助于HIPAA(健康数据永远不会到达不合规的服务器),SOC 2审核(数据路径中没有未经过审查的子处理器)和PCI DSS。
需要明确的是:使用客户端工具并不't make 您的产品 GDPR 兼容。它消除了您的开发工作流程中一个特定的、令人惊讶的常见泄漏- 开发人员试图在支持票证上提供帮助,将个人数据粘贴到随机网站中的泄漏。
哪些任务永远不应该触摸服务器?
我的个人分类,按泄漏会造成多大伤害排序:
从来没有服务器端 - 包含或暗示凭据:
- API 响应和有效负载的格式化: json格式化程序
- 解码令牌: jwt解码器、 Base64 转换器
- 格式化查询: SQL格式化程序
- 验证配置: YAML 验证器
- 调试 WordPress 数据: PHP 序列化器
- 散列和比较值: 哈希发生器
- 生成凭据: 密码生成器、 用户识别器
强烈喜欢客户端 - 专有但不是秘密:
Low stakes,但客户端仍然只是更快:
There's 对完整工具箱进行了更长的演练 开发人员生产力工具指南 和 编码工具指南。
如果您确实需要服务器端工具(大量转换,没有本地替代方案),请首先清理。交换真实密钥 YOUR_API_KEY,真实的电子邮件为 [email protected]。It's 60秒的寻找和替换,将潜在事件变成非事件。
为什么大多数在线工具都是服务器端?
Partly history, particular incentives。2010年,浏览器是't直到工作- 重处理必须在服务器上进行。那个约束已经消失了:现代JavaScript引擎和WebAssembly处理格式化,转换,哈希和图像压缩的速度与本机无法区分,浏览器API(文件,画布,Web加密)覆盖了I/O。
激励是更粘的问题服务器端处理让操作员可以详细地看到使用情况,精确地执行限制,保持处理逻辑专有,并且在最坏的情况下 - 将数据本身视为收入。永远不会接收您的数据的工具可以't将您的数据货币化,这正是为什么有些操作员不't想要架构,尽管它's现在在技术上很容易。
当我为 toolz。dev 构建工具时,客户端实际上是 更简单 engineering choice,而不仅仅是更私密的:没有处理服务器扩展,没有上传到安全,没有保留策略来编写,并且每个工具在 Web 应用程序和桌面应用程序中的工作方式相同,因为逻辑是平淡的平台无关的 TypeScript 隐私故事和工程故事指向同一个方向。它's罕见,当这种情况发生时;拿下胜利。
常见问题
"客户端处理"到底是什么意思?
所有计算都发生在您的浏览器、JavaScript(或 WebAssembly)、设备上。服务器's 唯一的角色是在页面加载时交付工具's 代码。您的输入永远不会出现在任何网络请求中,您可以在 DevTools Network 选项卡中确认。
如何检查工具是否是客户端?
打开 DevTools (F12) → 网络选项卡,启用 "保留日志,"将可识别的测试数据粘贴到工具中并进行处理。如果没有包含测试字符串的请求发生,该工具是客户端。在 Chrome 上,您还可以将 DevTools 切换到 "离线 "页面加载后 - 真正的客户端工具继续工作。
客户端工具比服务器端工具慢吗?
对于典型的开发人员任务,它们're更快 - 那里's没有上传,没有队列,没有下载本地处理2 MB JSON文件几乎是即时处理,而服务器往返在每一步都增加延迟,例外是重计算(大型视频转码,千兆字节级文件),其中强大的服务器击败浏览器选项卡。
Toolz。dev 收集任何东西吗?
Page-view 分析和匿名每工具使用量计数(用于速率限制) - 但永远不会处理您处理的内容输入、输出和上传的文件保留在您的浏览器中,这是可以通过网络选项卡检查来验证的,而不是您必须相信的事情。
JWT粘贴到在线解码器中真的有风险吗?
是的,比大多数开发人员假设的要多。根据 RFC 7519,JWT 有效负载是编码的,而不是加密的 - 任何持有令牌的人都可以读取声明,并且如果令牌 hasn't 过期,它可能可以作为实时凭据使用。将一个粘贴到服务器端解码器中,将可能有效的会话令牌传输给未知的第三方。使用客户端解码器。
使用客户端工具是否使我符合 GDPR?
没有任何单一的工具选择会使您合规。客户端工具删除的是一个特定的风险:来自您系统的个人数据到达未经审查的第三方处理器(这将需要您几乎肯定不会't与免费工具站点有第28条数据处理协议)。您自己的产品's义务不受影响。
我的雇主能看到我在客户端工具中处理什么吗?
Network monitoring看到你访问哪些站点,而不是你输入客户端工具的内容- there's没有请求携带你的输入来观察安装在设备本身上的端点监控(屏幕捕获,键盘记录器)无论工具架构如何都能看到所有内容,所以诚实的答案是:不是通过网络,可能是通过端点。
如果我的任务没有客户端替代方案怎么办?
粘贴前消毒:将凭据替换为占位符 (YOUR_API_KEY),将真实的个人数据交换为虚拟值、条形主机名和内部 URL。然后检查工具'的隐私政策,用于日志记录和保留语言,更喜欢您可以检查的开源工具,并将"免费、闭源、服务器端"视为风险最高的组合。
客户端工具和服务器端工具有什么区别?
Client-side工具将代码运送到您的浏览器并在那里运行;服务器端工具将您的数据运送到您不具备的机器't控制并在那里运行功能上输出可以是相同的-区别完全在于谁最终会持有您的输入。使用服务器端工具,您的数据存在,无论多么短暂,在其他's磁盘上,在他们的日志中,在他们的备份中。
JSON格式化器美化器在线使用安全吗?
JavaScript中要做的事情取决于实现,而不是类别,格式化JSON是微不足道的,因此客户端格式化程序没有理由传输任何东西- 而网络选项卡检查在十秒钟内就解决了。这里要比平常更加小心,因为JSON开发人员粘贴到格式化程序中是不成比例的包含令牌、电子邮件地址和内部ID的API响应。



