前端使用jQuery进行身份证号与手机号的脱敏操作详解

0x01 什么是脱敏

数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。
一般前端上会进行校验身份证号、手机号发送验证码的时候、或者查看个人信息的时候进行前端的一个保护操作

0x02 实现方法

  • jquery代码函数
//数字从第四位至倒数第四位脱敏
    function formatNumber(value) {
        var val = ''
        if (value.length > 0) {
            if (value.length > 11)
                val = value.substring(0, 4) + '******' + value.substring(value.length - 4);
            else if (value.length > 7)
                val = value.substring(0, 3) + '******' + value.substring(value.length - 2);
        }
        return val;
    }


//直接调用这个方法即可
 function Desensitization(content) {
        //正则表达式获得字符串中所有数字相关
        var Reg = /(\d{1,3})+(?:\.\d+)?/g
        var content_int = content.match(Reg);

        if (content_int != null && content_int != "null") {
            for (var i = 0; i < content_int.length; i++) {
                if (content_int[i].length == 18) //身份证号18位 
                {
                    var newIDcard = formatNumber(content_int[i]);
                    content = content.replace(content_int[i], newIDcard);
                }
                else if(content_int[i].length == 17) //身份证号13位 (可能包含一位英文字母)
                {
                    var newIDcard = formatNumber(content_int[i]);
                    content = content.replace(content_int[i], newIDcard);
                }
                else if (content_int[i].length == 11)  //11位手机号码
                {
                    var newPhone = formatNumber(content_int[i]);
                    content = content.replace(content_int[i], newPhone);
                }
                else if (content_int[i].length == 8)  //8位电话号码
                {
                    var newTel = formatNumber(content_int[i]);
                    content = content.replace(content_int[i], newTel);
                }
                else if (content_int[i].length == 12)  //带区号电话号码
                {
                    var newCodeTel = formatNumber(content_int[i]);
                    content = content.replace(content_int[i], newCodeTel);
                }
            }
        }
        return content;
    }
    • 引用
    1. content _result= Desensitization(delHtmlTag(content));

    delHtmlTag 是清除字符串中所有HTML标签的
    content 是您要进行处理的字符串
    content _result 是处理过后的字符串

    • 处理结果

    身份证号:23034791X 手机号:188*8888

    • delHtmlTag 是清除字符串中所有HTML标签方法
    function delHtmlTag(str, length) {
        if (IsNullOrEmpty(str)) {
            return '';
        }
        if (IsNullOrEmpty(length)) {
            length = 100;
        }
        return str.replace(/<[^>]+>/g, "").substring(0, length);//去掉所有的html标记
    }
    

    这样就可以轻松实现一些数据的脱敏操作、当然还有更多方式、也可以后端处理发送回前端、前端进行展示都可以!

    本文经授权后发布,本文观点不代表立场,文章出自:https://blog.csdn.net/qq_17837497/article/details/106193262?spm=1001.2014.3001.5501
    -- 展开阅读全文 --
    利用chrome漏洞进行微信钓鱼攻击防范
    « 上一篇 04-17
    纸飞机SEC—JAVA系列中级课程-第七节
    下一篇 » 04-22

    发表评论