隐私安全默认值
- URL 查询参数和 Fragment 会被移除;
- 用户、账户和上下文数据中名为
password、secret、token、authorization、cookie、api_key以及信用卡字段的键会被递归脱敏; - 操作名称是
Click <结构化选择器>,选择器不带 ID、测试 ID 或 class。只有设置defaultPrivacyLevel: 'allow'时,才会用元素文本为操作命名; - 会话回放中的 DOM 文本会被遮罩;
- 所有 Input 和
contenteditable值始终会被遮罩,即使页面可见文本已被允许。
屏蔽或遮罩 DOM 内容
SDK 无需应用编写额外的 Recorder 代码,就能识别以下隐私属性:谨慎允许页面可见文本
只有标记完所有敏感区域后,才可设置defaultPrivacyLevel: 'allow'。Input 值仍会被遮罩,配置的 maskTextSelector 和 contenteditable 元素也会继续被遮罩。
控制 URL 与网络采集
除非应用能保证查询参数中不含标识符或秘密,否则请保持trackUrlQueryString: false。在采集前排除敏感路由或网络接口:
allowedTracingUrls 只控制哪些 Origin 可以提供链路上下文,不会启用请求或响应 Body 采集;SDK 只记录耗时和清洗后的 URL 元数据。
在接入时去掉敏感文本
SDK 是第一道防线,服务端是第二道。应用会在任何内容写入前,把它选定的几类敏感文本从每个事件里去掉,不论事件由哪个 SDK 或客户端发来。在 RUM → 应用 里打开应用,开关 敏感数据 里的各类。新建的应用全部开启。
去掉文本的位置:事件所在和来自的地址(
view.url、view.referrer、resource.url 和错误的地址),错误的消息、堆栈和它的成因,视图和被点击对象的名称,请求的 GraphQL 操作名、负载和变量,请求与响应的头,以及 context 对象。夹在文本里的地址按地址处理,堆栈在地址之后给出的位置(:10:5)保留。user 和 account 是应用有意发送的关于人的信息,保持原样。
去掉文本发生在事件被拆成行之前,所以由它派生的内容也由保留下来的部分派生:含邮箱的地址的 view.url_path 和 view.url_path_group,以及错误所属的 issue。只在邮箱或数字上不同的错误会成为同一个 issue。
改动只对之后到达的事件生效,之前已经存储的内容不变。会话回放分段不做这样的处理:它们的文本由 SDK 按上面的隐私级别遮盖。
上线前检查
1
记录一个受控测试会话
使用非生产测试数据走完登录、结算、个人资料、搜索和错误流程。
2
检查每种事件数据
检查会话元数据、操作名称、URL、错误堆栈、自定义上下文和 DOM 回放。
3
添加选择器和排除规则
屏蔽敏感子树,并排除不需要采集的路由。
4
界面变化后重新检查
把隐私选择器作为生产配置;页面结构发生变化时必须重新测试。
会话回放
定义隐私边界后再配置 DOM 记录。