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

数字化管理平台
Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus教程
权限系统-商城
个人博客地址

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

在前端项目开发中,对于一些敏感信息,如:身份证号,手机号,用户名等,是不希望他人看到的。
一般处理的方式是使用 “*” 代替中间字符,这就是“脱敏法”。

1.1 手机号脱敏


我国使用的号码编码为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位是数字校验码,可由确定的校验公式计算得到。

由上图可知,给定一个公民身份证号码,可推断出该公民相关的出生地、出生年月和性别的信息。对于共享同一种地址码的人口,可以由国内各个地区的公开人口统计得到,这个数据量与地区人口密度相关,比如东部密度大,该信息具有很弱的“身份可识别性”,而西部一些偏远地区密度小,该信息可能具有很高的“身份可识别性”。对于同一个出生日期的人口数量,为了简单估计,假设为均匀分布,年龄在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 开始。

【项目数据优化一】敏感数据脱敏处理相关推荐

  1. vue项目结合iview4UI组件实现树状结构及复杂动态表头列表 Tree-Table 及复杂header 省市区树状表格联动 数据优化后台一次性返回一万条数据页面卡死问题

    一.首先看看需求最终效果图,该需求总共罗列以下几点 最左侧采用树状结构将地址省市区县街道展示出来,并且控制名称长度限制,多余的用省略号表示,鼠标悬浮上去名称展示出来 列表默认展示市一级数据,县及街道数 ...

  2. 数据优化 | CnOpenData国家基金项目数据

    国家基金项目数据 一.数据简介   国家自然科学基金和社会科学基金是我国规格最高的两项科学基金,面向全国,重点资助具有良好研究条件.研究实力的高等院校和科研机构中的研究人员.两大基金各有侧重,相互补充 ...

  3. vue渲染大量数据如何优化_Vue - Table表格渲染上千数据优化

    Vue - Table表格渲染上千数据优化 此次项目经验会谈谈常常在项目中,针对成千上万数据渲染优化的不断探索来谈谈本身的体会,其目的就是保证用户浏览上万条数据的时候,UI要很流畅,确保用户操做过程当 ...

  4. Vue 项目上线优化

    上线项目的优化 优化上线项目,首先在上线打包时我们通过babel插件将console清除,当然对项目打包后的体积的影响是微乎其微,对项目的入口文件的改善也是很有必要的,因为在开发阶段和上线如果我们使用 ...

  5. react打包后图片丢失_React中型项目的优化实践

    本文可能涉及的内容-- 项目介绍 整个项目大概有60+个页面,用到的组件大概150+,package里面的依赖大概有70+个,应该勉强算得上是一个中型的React的项目了. 下面给大家看看我们现在bu ...

  6. react 判断图片是否加载完成_React中型项目的优化实践

    项目介绍 整个项目大概有60+个页面,用到的组件大概150+,package里面的依赖大概有70+个,应该勉强算得上是一个中型的React的项目了. 下面给大家看看我们现在build一次项目的结果-- ...

  7. 项目开发优化技巧总结

    一.RecycleView 优化 RecycleView在开发时可以考虑以下优化的方案: 1. 数据处理和视图加载分离 a. 数据的处理逻辑尽可能放在异步处理,onBindViewHolder方法只做 ...

  8. oracle性能优化求生指南_Vue项目性能优化--实践指南,网上最全最详细

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 第一时间与你相约 每日英文 Some happened could not forget, even forget also o ...

  9. 8、实战项目-性能优化实战

    一.需求解析 为学生考试后从题库中抽取题目生成大量的离线练习册文档并打印. 题目在数据库中存储形式,平均长度800字节: " 下图是Diameter协议中的那部分? </p>&l ...

最新文章

  1. 浏览器和服务器 对http请求(post get) url长度限制
  2. python中怎么比较两个列表-python中比较两个列表的实例方法
  3. c语言出圈游戏课设报告,c语言作业 出圈游戏
  4. Java ClassLoader findResources()方法与示例
  5. 解决MySQL数据库中文模糊检索问题
  6. [译]使用Webpack提高Vue.js应用程序的4种方式
  7. 【Java】图解 Java 中的数据结构及原理
  8. java线性数据结构_Java实现数据结构之线性结构
  9. java.lang.instrument 中的premain 实现类的个性化加载(附源代码)
  10. 图片版坦克大战源代码之坦克类(二)
  11. 蓝桥杯_单片机_入门基础知识(七)_DS18b20
  12. 【flutter】上架马甲包过审
  13. 科学家发现4起黑洞相撞事件,其中最大的一起或为“双重”碰撞
  14. python替换 输入手机号_python file模块 替换输入内容脚本
  15. 产业区块链发展周报(10.11—10.16)| 陀螺研究院
  16. mysql删除不彻底,mysql删除不彻底的解决方法
  17. ABAP 销售订单创建BAPI:BAPI_SALESORDER_CREATEFROMDAT2总结
  18. 用 JS 原生方法实现 jQuery 的 append, prepend, before, after
  19. HTML5期末大作业:商城网站设计——仿天猫在线商城(HTML和CSS实现天猫在线商城网站)
  20. Firefly AIO-3399ProC开发板与PC端部署Qt5.12.2交叉编译环境

热门文章

  1. Educational Codeforces Round 121 (Rated for Div. 2) unr场 A B C
  2. 大规模分布式与并行数据库架构
  3. 倒立摆系统分析及控制
  4. c语言订餐系统项目范例,C语言订餐系统.doc
  5. 计算机与网络应用word解析,计算机二级word真题:《计算机与网络应用》教材的编排...
  6. ORB-SLAM3相对于ORB-SLAM2有哪些优势?
  7. 关于笔记本WLAN被禁用解决方法
  8. 2020云米5G战略新品发布,超越时代探索“互联未来•互动家”
  9. 流媒体直播防盗链安全控制
  10. Android获取自定义格式时区