优化之数据脱敏

数据脱敏:是指对某些敏感信息(如:手机号、身份证号、卡号、用户地址、邮箱等)通过一定规则进行数据变形处理,实现隐私数据的保护。

数据脱敏分为 静态数据脱敏动态数据脱敏

静态数据脱敏

静态脱敏:用于将数据抽取出生产环境脱敏后分发至测试、开发、培训、数据分析等场景。

通常我们在开发中,为了保证数据的真实场景,通常会将生产环境的数据拷贝到测试库,这时为了保证数据的安全,就会对敏感数据进行脱敏。

动态数据脱敏

动态脱敏:数据不脱离生产环境,对敏感数据的查询和调用结果进行实时脱敏。

前端脱敏

数据通常在后端进行脱敏是更为安全的,毕竟在前后端传输过程中也是可能被截取到。

但是有时候仍会前端来处理,前端处理通常是将关键信息以*******来显示。

姓名脱敏

let handleName = function(name){
    let arr = Array.from(name)
    let result = ''
    if (arr.length === 2) {
        result = arr[0] + '*'
    } else if (arr.length > 2) {
        for (let i = 1; i < arr.length - 1; i++) {
          arr[i] = '*'
        }
        result = arr.join('')
    }else {
        return name
    }
    return result
}

console.log(handleName('张三')) // 张*
console.log(handleName('张三丰'))  // 张*丰
console.log(handleName('张三丰牛')) //  张**牛

手机号脱敏

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

console.log(handleName('15583585177'))  // 155****5177

身份证号脱敏

let handleIdCard = function(id) {
  return id.replace(/^(.{4})(?:\d+)(.{4})$/, "$1**********$2");
}

console.log(handleIdCard('511623199210122518')) // 5116**********2518

邮箱脱敏

let handleEmail = function(email) {
    return email.replace(/^(.{0,3}).*@(.*)$/, "$1***@$2")
}

console.log(handleEmail('819759949@qq.com'))  // 819***@qq.com

通用脱敏方法

可用于手机号,身份证号,地址等处理

/**
 *   str: 待处理字符串
 *   begin:头部保留多少位
 *   end: 尾部保留多少位
 *   max: 最大掩码*的重复数量
 */
let handleCommon = function (str, begin, end = 0, max = 20) {
    if (!str) return '';
    if (begin + end > str.length) return str;

    let leftStr = str.substring(0, begin);
    let rightStr = str.substring(str.length - end, str.length);

    let num = Math.min(max, str.length - begin - end);
    return leftStr + '*'.repeat(num) + rightStr;
}

console.log(handleCommon('13057794096', 3, 4, 4)) 
// 130****4096

console.log(handleCommon('511623199210122518', 4, 4)) 
// 5116**********2518

console.log(handleCommon('四川省成都市成华区建设路66号4栋一单元606', 6, 0, 6)) 
// 四川省成都市******

关注公众号『web前端技术分享』获取更多实践分享,免费领取大厂面试题  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪子快跑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值