表单正常,但你从未查看提交后产生的请求

为了衡量注册转化,你添加广告像素;为了改进咨询流程,你开启会话回放。表单能够正常提交,事件也在累积,看起来似乎没有问题。但是,如果没有确认输入电子邮箱和密码的瞬间产生了哪些外部请求,就不能仅凭表单是否正常工作来判断数据传输范围。

根据安全公司 Melurna 的测试,Klaviyo 注册表单至少在 2024 年 2 月至 2025 年 11 月期间存在错误配置。电子邮箱、密码、公司名称、网站地址和电话号码可能会与嵌入页面的 Facebook、Google、HubSpot、Microsoft、LinkedIn、X 等外部跟踪公司共享。不过,公开资料没有说明具体是哪段代码或哪项设置导致了这一问题,也没有说明各公司实际接收和存储了哪些字段。

Klaviyo 表示已修复问题,并通知了受影响的用户。按“可立即获取的活动日志”计算,已知受影响人数不足 200 人;但由于日志保留期限未公开,不能将该数字泛化为整个期间的影响规模。

第一步从网络审计开始

无需注册额外服务或进行 API 认证。只要有 Chrome、内置 DevTools,以及组织拥有或明确授权测试的表单,即可开始。下面的输入值是用于展示格式的示例。请勿填写真实客户信息或在其他账户使用的密码;应替换为组织管理的测试地址,以及符合表单验证规则的值。

示例测试值

  • 电子邮箱:qa+form-audit-20260907@example.test
  • 虚拟密码:WR-AUDIT-ONLY-9f3K!2

如果 example.test 无法通过实际表单的邮箱验证,请使用组织管理的可接收邮件测试地址。如果提交未完成,也无法评估提交后执行的标签。

  1. 确认官方流程和准备状态。
    Chrome Network 官方文档中包含请求记录、Preserve log 和请求搜索部分。除 Chrome 外,无需安装工具或登录服务。还要确认你有权复现目标表单、同意状态、登录状态和地区条件。
  2. 清空记录并开启 Preserve log。
    在 Chrome 中打开表单后,转到 DevTools 的Network面板。确认录制指示已启用,清除现有请求,然后选择Preserve log。该设置会在提交后跳转到其他页面时保留前一页面的请求。但它不会追溯记录在打开 DevTools 前已结束的请求。
  3. 使用唯一的测试值完成提交。
    输入组织管理的测试邮箱,以及不会在真实服务中重复使用的虚拟密码。点击提交按钮后,确认成功页面或成功响应,并记录时间及同意、登录和地区条件。若出现验证错误,该场景不应计为已完成测试。
  4. 打开 Search 标签页,而不是普通 Filter。
    在 Network 面板处于焦点状态时,macOS 按Command+F,Windows 和 Linux 按Control+F。在右侧打开的Search标签页中,依次输入测试邮箱、电话号码和虚拟密码,然后按 Enter。屏幕顶部的 Filter 输入框用于筛选域名、方法等请求属性,并不是搜索完整 Payload 字符串的搜索框。
  5. 记录匹配请求的目的地和产生路径。
    点击每条搜索结果,查看目的地 URL 和Headers·Payload·Response,再通过请求列表中的Initiator追踪是哪个脚本创建了请求。HAR 可能含有认证令牌或个人信息,因此请勿上传到普通即时通信工具或公开工作代码库。
  6. 即使没有原文,也要核对第三方请求和标签设置。
    查看提交前后新出现的外部域名请求,并确认 GTM、广告标签和 CMP 中是否启用了自动收集、用户提供的数据、CSS 选择器和哈希功能。Google Ads 增强型转化可以收集电子邮箱、姓名、地址和电话号码等第一方数据,并以哈希形式发送给 Google,因此仅搜索原文可能无法发现。
  7. 判断是否已获批准,并限制传输路径。
    如发现原文或可验证的转换值,请核对目的地、广告系列目的、同意条件、适用产品和内部批准情况。不能仅因其为哈希值就断定发生泄露,但发送到 Google Analytics 的电子邮箱、个人电话号码等 PII 必须在传输前删除。混入 URL、页面标题和表单输入值的 PII 也应纳入检查范围。
  8. 修复后在相同条件下再次提交。
    从 Preserve log 设置开始,以相同方式重复操作。当已记录提交成功、未在未经批准的目的地发现测试值原文或可验证的转换值,并且标签设置中不存在收集该字段的未经批准路径时,记录该场景已通过初步检查。

没有搜索结果并不等于安全。

如果值经过规范化、哈希、编码,或被拆分到多个字段中,可能不会出现在原文搜索中。如果没有查看标签设置的权限,请记录为“未发现”,并暂缓作出完整结论。

dataLayer 是传输清单,不是安全边界

在同一页面运行的第三方 JavaScript 可以读取 DOM 中可用的数据。即使只将允许的值放入 dataLayer,也不会自动阻止普通第三方代码访问 DOM。实际范围取决于 iframe 隔离、沙盒和标签管理器设置。

如果可以从浏览器中移除相关脚本,可以考虑由主机验证值后,仅通过服务器端传输路径发送必要数据的架构。如果必须保留客户端标签,请减少不必要的 DOM 变量和 Custom HTML,并限制模板权限、选择器和自动收集范围。

在 GTM 中,容器权限分为 Read、Edit、Approve 和 Publish。应区分修改标签的人员与发布到生产环境的人员,但也应记住,仅靠权限分离无法验证已部署标签的收集范围。

对于会话回放,请查看当前设置和变更时间

会话回放工具的遮蔽范围因产品和设置而异。Microsoft Clarity 目前在所有遮蔽模式下都会遮蔽输入框和下拉菜单,默认Balanced模式还会将数字和电子邮箱归类为敏感内容。

如果使用 Clarity,请在Settings → Masking中确认当前模式,并通过 CSS 选择器或data-clarity-mask属性指定需额外遮蔽的容器。变更不会追溯应用于过去的记录,反映到新记录中最多可能需要一小时。Clarity 的遮蔽也不会阻止其他广告或分析标签的传输。

每次添加新标签时都重复问同样的问题

通过跟踪技术共享敏感信息并非 Klaviyo 的孤立案例。美国 FTC 指称,GoodRx 多年来一直向 Facebook、Google 等广告平台共享处方药和健康状况等信息。 普林斯顿研究人员也公开了观察到会话回放的 8,000 个网站清单,以及 Walgreens 处方信息和 Gradescope 学生信息的案例。

各事件的技术配置、数据类型、持续时间和法律状态各不相同,不能合并为同一漏洞或单一的影响规模。反复出现的运营问题是:添加新标签后,是否重新检查了实际传输字段和执行条件。

应与广告系列变更记录一并保存的项目

  • 标签请求人及业务目的
  • 执行的表单及同意、登录和地区条件
  • 外部目的地以及获批准的原文、规范化和哈希字段
  • 是否提交成功及 Network Search 结果
  • 自动收集、选择器和用户提供数据设置
  • 拥有停止、修改和发布权限的负责人

若发现真实个人信息被发送至未经批准的目的地,请不要盲目扩大复现范围。应先限制标签或传输路径,控制证据访问权限,然后与安全、隐私和法务负责人评估事件响应及通知的必要性。

如果想进一步深入了解

Network features reference页面介绍了跨页面跳转保留请求、通过 Command/Ctrl+F 打开的 Search 标签页,以及检查 Headers·Payload·Initiator 的方法。 developer.chrome.com

Third Party Javascript Management有助于检查第三方代码访问 DOM 数据的机制,以及客户端与服务器端传输方式的差异。 cheatsheetseries.owasp.org

About enhanced conversions for web可帮助确认 Google Ads 中用户提供的数据可能经过规范化、哈希后传输的功能范围。 support.google.com