一、需求描述:
等保三级要求:客户端、服务端交互数据脱敏处理
翻译:客户端、服务端Api接口交互涉及敏感数据(身份证号、手机号、详细地址等)防抓包
二、业务流程图
三、实现&场景应用
(一)客户端请求服务端
- 客户端
- 对含有敏感数据的请求入参整体参数流进行
对称加密
; - 对
对称加密后的密文
进行自定义混淆
处理并得到Data
参数; - 对
Data
参数按约定好的格式设置到Request
管道参数流; Header
添加请求参数加密标识X-IsEncrypt
。
- 对含有敏感数据的请求入参整体参数流进行
- 服务端
- 服务端
Request
请求管道根据Header
客户端给的标识来判断并处理参数流; - 标识为明文,则直接跳过,假设
Header
的X-IsEncrypt
为密文标识则出现以下处理:
1.获取管道参数流、并序列化得到Data
参数;
2.对不为空的Data
参数进行自定义混淆
处理并得到待解密的对称加密后的密文
;
3.对对称加密后的密文
进行对称解密
得到明文参数流;
4.把明文参数流设置到Request
管道参数流。
- 服务端
ps: 入参格式密文格式约定
- GET:
GET请求方式参数流长度有限制,直接选择POST。
- POST
{
"Data": "PTBUUlVoRldHRm1kSmxYWVlCWFJObFdSd2dFT1BGbVdRRlRPaTEwYjRVVlN2WjNja1ZHUlJwMlJRWmtN"
}
(二)服务端响应客户端
业务状态码200
- 服务端
- 对含有敏感数据的业务整体参数流进行
对称加密
; - 对
对称加密后的密文
进行自定义混淆
处理并得到Data
参数; - 对
Data
参数按约定好的格式设置到Request
管道参数流; - 返回值基类
IsEncrypt
设置参数加密标识。
- 对含有敏感数据的业务整体参数流进行
- 客户端
- 客户端
Response
响应管道根据返回值IsEncrypt
客户端给的标识来判断并处理参数流; - 标识为明文,则直接跳过,假设返回值
IsEncrypt
为密文标识则出现以下处理:
1.获取Data
参数,并对不为空的Data
参数进行自定义混淆
处理并得到待解密的对称加密后的密文
;
2.对对称加密后的密文
进行对称解密
得到明文参数流;
- 客户端
ps: 响应参数格式密文格式约定
/// <summary>
/// 返回值基类约束
/// </summary>
public interface IResultBase
{
/// <summary>
/// 业务状态码
/// </summary>
ushort Code { get; set; }
/// <summary>
/// 提示消息
/// </summary>
string Msg { get; set; }
/// <summary>
/// 密文标识,<see langword="true"/>:表示已加密,默认<see langword="false"/>:表示明文
/// </summary>
bool IsEncrypt { get; set; }
/// <summary>
/// 记录
/// </summary>
TSource Data { get; set; }
}
示例:
{
"code": 200,
"msg": "",
"isEncrypt": true,
"data": "PTBUU1RSRGVFbGxlUDlTWUhSV1QzcDFVb0puYTRjamIyTVRjbkJYU3haRlQxWkhNc1pUTkJWWGRvTldR"
}