您的位置:首页 > 运维架构 > 网站架构

小白de架构哲学 - 客户端、服务端交互数据脱敏处理

2020-06-29 04:59 1271 查看

一、需求描述:

等保三级要求:客户端、服务端交互数据脱敏处理

翻译:客户端、服务端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"
    }
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐