客户端数据安全实测:用 DevTools 抓包验证工具是否真正“本地处理”
原文:https://dev.to/formatstack_2688dca3303f2/dont-trust-my-client-side-only-claim-open-devtools-and-check-51fe (作者 @formatstack_2688dca3303f2)
最近,Carhartt 有 1290 万客户账户信息出现在 Have I Been Pwned 平台上。姓名、邮箱、电话、实体地址——全部被一个勒索团伙获取,他们声称数据是八月份拿到的。曼彻斯特机场集团也遭遇了类似情况:旗下三个英国机场的 Wi-Fi 注册数据全部泄露。
这些公司被入侵,并非因为用户在可疑工具里粘贴了内容。它们被入侵,是因为在服务器端存储了数据,而存储本身就是一种持续性的风险——数据就放在那里,等着被窃取。但正是这些新闻标题,让我们应该对各种网络工具声称的“不存储你的数据”持怀疑态度,而非盲目信任。互联网上的每个 JSON 格式化工具、正则表达式测试器和 Base64 解码器,都会在某个地方写上“您的数据永远不会离开您的浏览器”之类的话。其中大多数说的是实话,但有些不是。除非你亲自检查,否则你根本无法分辨。
因此,这里有一个实际的检查方法,我以 FormatStack 为例进行演示,因为这是我可以向你展示源码的工具。
它的声明
FormatStack 的工具——包括 JSON 格式化器、正则测试器、UUID 生成器、Base64 编解码器、cron 表达式解析器——完全在浏览器内运行。没有框架,没有构建步骤会将你的输入发送到服务器,也没有 API 调用会将你粘贴的任何内容传输到任何地方。
是证据,而非承诺
任何人都可以在页脚写上“本地处理”。以下是验证方法,大约需要 30 秒,适用于任何声称进行客户端处理的工具,而不仅是这一个:
- 在你的浏览器中打开该工具。
- 打开开发者工具(F12 或 Cmd+Option+I),切换到“Network”标签页。
- 清空日志,然后粘贴一些有识别度的内容——一个假的 API 密钥、一个虚构的邮箱,任何你能认出来的东西。
- 运行格式化器/解析器/或该工具的任何功能。
- 观察“Network”标签页。如果你粘贴的内容仅在客户端处理,你将看到零个新的请求携带该负载。可能会触发分析(Analytics)请求(如页面浏览、按钮点击)——这是预期中且有披露的——但这些请求都不会包含你的输入。
相反,如果你看到粘贴后立即触发了一个 POST 请求到某个 API,并且你的输入就在请求体中——那么这个工具就没有做到它营销文案所说的事情,无论它的页脚写了什么。
为什么我不隐藏那些确实发送数据的部分
FormatStack 使用了 Google Analytics 和 AdSense。这两者都会发出外部请求。我不会假装不存在——那和偷偷上传你 JSON 数据的工具属于同一类谎言。真正重要且我仅声明的区别在于,这是一个很窄的范围:分析服务追踪的是“你使用了这个工具”;没有任何东西追踪“你向它输入了什么”。打开 Network 标签页,你就能看到区别——GA 调用会携带事件名称和页面路径,但绝不会包含你粘贴的内容。
这比“我们不追踪任何东西”的声明范围更小,也是唯一经得起实际验证的声明。
要点
数据泄露新闻每隔几周就会出现,因为无论意图如何,存储本身就是风险——良好的安全实践可以降低风险,但无法消除“存储的数据最终可能泄露”这一事实。那些不可能泄露你粘贴内容的工具,是那些从一开始就没有获取过这些内容的工具。但也不要只听我一面之词。打开标签页。亲自验证。
原文:https://dev.to/formatstack_2688dca3303f2/dont-trust-my-client-side-only-claim-open-devtools-and-check-51fe (作者 @formatstack_2688dca3303f2)