数据脱敏和国密
网络请求脱敏功能,是指对采集到的网络请求数据中包含的敏感信息(如用户身份、账号密码、银行卡号、身份证号等)进行脱敏,在保留请求结构和非敏感信息可分析性的同时,防止敏感数据泄露,兼顾体验分析需求与数据安全合规要求。如果您需要对回放会话中用户输入内容(如密码、手机号等)进行脱敏,详见数据采集。
很多客户为保护用户侧敏感数据,避免隐私泄露,要求对数据进行国密加密,可通过国密加密配置满足。
使用场景
支付相关请求的数据保护:电商、金融类应用中,用户支付环节的网络请求(如提交订单、支付确认)常包含银行卡号、支付密码等高度敏感信息。
用户身份信息的合规处理:社交、医疗类应用的登录、个人信息提交等请求,会包含手机号、身份证号、病历编号等隐私数据。
内部接口的敏感参数过滤:企业级应用中,部分内部接口(如员工权限校验、客户管理系统接口)的请求可能包含内部编码、权限标识、客户机密信息等。
避免敏感数据干扰分析:部分敏感字段(如用户自定义的私密备注、聊天内容)若被完整采集,不仅存在隐私风险,还可能因内容杂乱干扰正常分析(如日志检索、异常排查)
客户有国密加密要求:对客户端SDK和平台之间数据传输有国密加密要求,保护用户侧敏感数据,避免隐私泄露
开始使用
网络请求脱敏
基于原始请求地址、域名过滤哪些网络请求需要脱敏,用户可自定义不同条件之间按”与“还是”或“关系进行过滤。
支持对URL、RequestHeader、ResponseHeader参数进行脱敏,可屏蔽全部参数或者指定屏蔽部分参数。
数据脱敏方式支持:不采集和混淆采集 ,不采集指不采集该项参数,混淆采集指采集时混淆,前端显示混淆部分为“**”
若同一网络请求命中多条规则,脱敏方式优先按不采集生效

样例
原始 URL为:https://example.com/pay?orderId=P20230915001&cardNo=6222021234567890123&amount=999
| 脱敏对象 | 脱敏方式 | 脱敏后效果 |
|---|---|---|
| URL全部参数 | 不采集 | https://example.com/pay |
指定URL参数 orderId、cardNo | 混淆采集 | https://example.com/pay?orderId=**&cardNo=**&amount=999 |
指定URL参数 amount | 不采集 | https://example.com/pay?orderId=P20230915001&cardNo=6222021234567890123 |
国密加密
国密加密需要进行平台和客户端工程两个方向配置。调用本接口,可以对SDK自身发起的请求进行国密加密。需要在探针启动前调用以下接口设置。需保证与平台配置一致,否则会导致SDK数据请求异常。
一、接口说明
| 参数名类型注释 | 参数限制 | 失败结果 |
|---|---|---|
| key | 国密加密的秘钥(长度必须为16个字节,请勿使用< > & ' " %特殊字符) | 加密失败或平台解密失败 |
| identifier | 对应key的唯一标识(长度限制1-256个字符,仅支持字母数字下划线_和横线-) | 加密失败或平台解密失败 |
二、配置方式:
1、平台侧nacos配置示例:

2、客户端工程配置示例:
iOS
Objective-C
[BRSAgent enableGMSM4EncryptWithKey:@"qwertyuiopasdfgh" identifier:@"v30"];
Swift:
BRSAgent.enableGMSM4Encrypt(withKey: "qwertyuiopasdfgh", identifier: "v30")
Android:
byte[] secretKey = new byte[]{q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h};
//assert secretKey.length == 16;
String identifier="v30";
Bonree.withAppID("<#AppID#>")
.withEnableGMSM4Encrypt(secretKey,identifier)
.start(getApplicationContext());
或者
String secretKeyStr ="qwertyuiopasdfgh";
byte[] secretKey = secretKeyStr.getBytes();
//assert secretKey.length == 16; 务必保证字符实际长度为16字节,请勿使用< > & ' " %特殊字符
String identifier ="v30";
Bonree.withAppID("<#AppID#>")
.withEnableGMSM4Encrypt(secretKey,identifier)
.start(getApplicationContext());
Harmony:
let secretKey = new Uint8Array([q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h]);
//assert secretKey.length == 16;务必保证字符实际长度为16字节,请勿使用< > & ' " %特殊字符
let identifier :string ="v30";
Bonree.withAppID("<#AppID#>")
.withEnableGMSM4Encrypt(secretKey,identifier)
.start(this.context.getApplicationContext())
或者
let secretKeyStr="qwertyuiopasdfgh"
let textEncoder = new util.TextEncoder('utf-8');
let secretKey = textEncoder.encodeInto(secretKeyStr);
//assert secretKey.length == 16;务必保证字符实际长度为16字节,请勿使用< > & ' " %特殊字符
let identifier :string ="v30";
Bonree.withAppID("<#AppID#>")
.withEnableGMSM4Encrypt(secretKey,identifier)
.start(this.context.getApplicationContext())
Web:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script id="BonreeAgent" src="BonreeSDK_JS.min.js" data=
'{
"appId":"<#AppID#>",
"uploadAddrHttp":"http://<#Upload地址#>",
"uploadAddrHttps":"https://<#Upload地址#>",
"sm4Config":{
"key": "qwertyuiopasdfgh",
"identifier":"v30"
}
}'>
</script>
</head>
<body>
</body>
</html>