跳到主要内容

数据脱敏和国密

网络请求脱敏功能,是指对采集到的网络请求数据中包含的敏感信息(如用户身份、账号密码、银行卡号、身份证号等)进行脱敏,在保留请求结构和非敏感信息可分析性的同时,防止敏感数据泄露,兼顾体验分析需求与数据安全合规要求。如果您需要对回放会话中用户输入内容(如密码、手机号等)进行脱敏,详见数据采集

很多客户为保护用户侧敏感数据,避免隐私泄露,要求对数据进行国密加密,可通过国密加密配置满足。

使用场景

支付相关请求的数据保护:电商、金融类应用中,用户支付环节的网络请求(如提交订单、支付确认)常包含银行卡号、支付密码等高度敏感信息。

用户身份信息的合规处理:社交、医疗类应用的登录、个人信息提交等请求,会包含手机号、身份证号、病历编号等隐私数据。

内部接口的敏感参数过滤:企业级应用中,部分内部接口(如员工权限校验、客户管理系统接口)的请求可能包含内部编码、权限标识、客户机密信息等。

避免敏感数据干扰分析:部分敏感字段(如用户自定义的私密备注、聊天内容)若被完整采集,不仅存在隐私风险,还可能因内容杂乱干扰正常分析(如日志检索、异常排查)

客户有国密加密要求:对客户端SDK和平台之间数据传输有国密加密要求,保护用户侧敏感数据,避免隐私泄露

开始使用

网络请求脱敏

基于原始请求地址、域名过滤哪些网络请求需要脱敏,用户可自定义不同条件之间按”与“还是”或“关系进行过滤。

支持对URL、RequestHeader、ResponseHeader参数进行脱敏,可屏蔽全部参数或者指定屏蔽部分参数。

数据脱敏方式支持:不采集和混淆采集 ,不采集指不采集该项参数,混淆采集指采集时混淆,前端显示混淆部分为“**”

若同一网络请求命中多条规则,脱敏方式优先按不采集生效

image-20250911173200399

样例

原始 URL为:https://example.com/pay?orderId=P20230915001&cardNo=6222021234567890123&amount=999

脱敏对象脱敏方式脱敏后效果
URL全部参数不采集https://example.com/pay
指定URL参数 orderIdcardNo混淆采集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配置示例:

0867b85bc443472191d0da2136894b69.png

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>