【项目数据优化一】敏感数据脱敏处理

简介: 【项目数据优化一】敏感数据脱敏处理

前言:随着信息化发展与数字转型,企业有大量的数据二次利用(secondaryuse)与挖掘需求,为了平衡数据利用与隐私保护(敏感数据保护)问题,数据脱敏——作为一种成熟且应用灵活的数据安全技术,成为当前绝大数企业在数据安全治理与建设过程中的必选技术与措施。

数字化管理平台

Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus教程

权限系统-商城

个人博客地址

一、简单逻辑的数据脱敏处理

在前端项目开发中,对于一些敏感信息,如:身份证号,手机号,用户名等,是不希望他人看到的。

一般处理的方式是使用 “*” 代替中间字符,这就是“脱敏法”。

e0594aa206304c5d87223ac5ac58223d.png

1.1 手机号脱敏


ad725e404a104459b18e540151bb621f.png

我国使用的号码编码为11位,其中前3位是网络识别码,表示是联通,移动,电信;第4-7位是地区编码;第8-11位是用户号码(随机分配)。如图2所示。根据手机号码可推断出号码用户的号码归属地、以及运营商选择信息。除去手机号的第一位默认为1,其他位的范围一般都可取0-9,那么可估计最大生成的号码规模为10^10= 100亿。

phone.replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2")

1.2 身份证号脱敏

我国公民身份号码为18位,包含标识主体丰富的时空信息。它可表示为图1所示。由17位数字本体码和1位校验码组成。前6位是地址码编码:1-2位表示省(自治区、直辖市、特别行政区)、3-4位表示市(地区、自治州、盟及国家直辖市所属市辖区和县的汇总码)、5-6表示县(市辖区、县级市、旗)。而第7-14位数字表示出生日期,包括4位出生年份+4位生日日期;15-17位数字顺序码(其中17位的奇数分给男性,偶数分给女性),18位是数字校验码,可由确定的校验公式计算得到。

1bb6bd5f8df7424da51d65cbc4f5a633.png

由上图可知,给定一个公民身份证号码,可推断出该公民相关的出生地、出生年月和性别的信息。对于共享同一种地址码的人口,可以由国内各个地区的公开人口统计得到,这个数据量与地区人口密度相关,比如东部密度大,该信息具有很弱的“身份可识别性”,而西部一些偏远地区密度小,该信息可能具有很高的“身份可识别性”。对于同一个出生日期的人口数量,为了简单估计,假设为均匀分布,年龄在0-130范围,那么同一天出生大约为3万人(14亿/(130*365))。由此可见,单单暴露身份证号码的出生日期8位,“身份可识别性”很弱。然而,将地区编码考虑进来,3万种可能性进一步消除,再经过1000种可能性的顺序码(15-17位),可完全消除多种可能性,“身份可识别性”达到唯一水平。

idCard.replace(/^(.{6})(?:\d+)(.{2})$/, "$1**********$2") 

1.3 代码演示

columns: [
          { dataIndex: 'shipperName', title: '企业名称', width: 230 },
          { dataIndex: 'serialNumber', title: '承运单号', width: 260 },
          { dataIndex: 'contractTypeName', title: '订单类型', width: 100, align: 'center' },
          { dataIndex: 'driverName', title: '司机姓名', width: 100, align: 'center' },
          { dataIndex: 'driverPhone',
            title: '司机手机号',
            width: 130,
            align: 'center',
            customRender: (text) => {
              return text.replace(/^(.{3})(?:\d+)(.{4})$/, '$1****$2')
          } },
          { dataIndex: 'plateNumber', title: '车牌号', width: 110, align: 'center' },
          { dataIndex: 'contractTime', title: '接单时间', width: 170, align: 'center' }
]

二、复杂逻辑的数据脱敏处理

2.1 用户名脱敏

用户名不同于手机号和身份证号,它属于指定范围内的不定长度,可能是两个字、三个字、四个字等等,所以需要通过判断的方式来处理。

const nameMask  =  (name) => {
  let result = ""
  switch (true) {
      case name.length === 2:
          return name.substring(0, 1) + '*' 
          break;
      case name.length === 3:
          return name.substring(0, 1) + "*" + name.substring(name.length-1) 
          break;
        case name.length >= 4:
          return name.replace(/^(.{1})(?:.{1,})(.{1})$/g, "$1**$2")
          break;
  }
  return result;
}

注:具体的数据处理规则,请根据业务需求适当调整。

三、解释说明

3.1 正则表达式中的 ()

正则表达式中的 () 就是起到一个分组作用,将匹配到的放到 mathches 集合中,$ 相当于集合名字,1-9 就相当于索引,$1…$9 相当于对应索引的值。注意下标是从 1 开始,表示第一个元素,不是从0 开始。


相关文章
|
6天前
|
数据安全/隐私保护 数据格式
数据安全必备:三种实用的数据脱敏技术
在数字化时代,数据安全和隐私保护成为了企业和个人关注的焦点。数据脱敏作为一种有效的数据保护手段,能够降低数据泄露的风险,保护用户隐私。本文将介绍三种常见的数据脱敏方案,帮助您在实际工作中选择合适的脱敏技术。
15 2
|
6天前
|
数据安全/隐私保护 数据格式
高效的数据脱敏策略
在数字化时代,数据安全和隐私保护变得尤为重要。数据脱敏作为一种有效的数据保护手段,可以帮助企业降低数据泄露风险,同时遵守相关的法律法规。本文将介绍三种常见的数据脱敏方案,为您提供实用的技术干货。
17 1
|
27天前
|
Java fastjson Apache
【数据安全】数据脱敏方案总结
【数据安全】数据脱敏方案总结
72 1
|
5月前
|
数据处理 数据安全/隐私保护
JeecgBoot 中如何对敏感信息进行脱敏处理?
数据脱敏即将一些敏感信息通过加密、格式化等方式处理,展示给用户一个新的或是格式化后的信息,避免了敏感信息的暴露。
58 1
|
6月前
|
算法 大数据 数据挖掘
数据脱敏技术
【4月更文挑战第24天】数据脱敏可以划分为静态数据脱敏(Static Data Masking, SDM)和动态数据脱敏(Dynamic Data Masking, DDM)技术。
|
6月前
|
安全 算法 数据管理
数据安全产品之认识数据脱敏系统
数据脱敏是一种信息安全技术,它通过将敏感信息转换成无实际意义的数据,同时保持原始数据的格式、类型和业务逻辑,以确保数据在使用过程中的安全性和合规性。数据脱敏的目的是保护个人隐私和企业敏感信息,防止数据在非生产环境中泄露或被不当使用。
199 0
|
12月前
|
安全 算法 大数据
数据脱敏,顾名思义就是对敏感数据进行变形处理
数据脱敏,顾名思义就是对敏感数据进行变形处理
145 2
|
Java 关系型数据库 MySQL
数据脱敏的 3 种常见方案,好用到爆!
数据脱敏的 3 种常见方案,好用到爆!
762 0
数据脱敏的 3 种常见方案,好用到爆!
|
存储 SQL 算法
数据脱敏技术与应用
数据脱敏技术与应用
数据脱敏技术与应用
|
JavaScript Dubbo Java
3种常见的数据脱敏方案
3种常见的数据脱敏方案
3种常见的数据脱敏方案