개인정보에 관련하여 고객 정보를 Masking해야 한다는 이야기를 들었다.
서버 쪽에서도 처리할건 하겠지만, 일단 Javascript로 처리하는 기능을 인터넷에 검색해서 만듬.
let maskingFunction = {
checkNull: function (str) {
return typeof str === "undefined" || str === null || str.length === 0;
},
checkConfigEnable: function () {
//Global
return isMaskingEnable;
},
email: function (str, isBackStrMasking) {
if(this.checkNull(str) === true || this.checkConfigEnable() === false) {
return str;
}
let email = str.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
if(this.checkNull(email) === true || this.checkNull(str) === true) {
return str;
} else {
let length = email.toString().split('@')[0].length - 3;
return isBackStrMasking === true
? str.replace(new RegExp('.(?=.{0,' + length + '}@)', 'g'), '*').replace(/.{6}$/, "******")
: str.replace(new RegExp('.(?=.{0,' + length + '}@)', 'g'), '*');
}
},
phone: function (str) {
let maskingPhoneStr;
if(this.checkNull(str) === true || this.checkConfigEnable() === false) {
return str;
}
//- 존재.
if(str.indexOf('-') > -1) {
let phoneStr = str.match(/\d{2,3}-\d{3,4}-\d{4}/gi);
if(this.checkNull(phoneStr) === true) {
return str;
}
if(/-[0-9]{3}-/.test(phoneStr)) {
//00-000-0000
maskingPhoneStr = str.replace(phoneStr, phoneStr.replace(/-[0-9]{3}-/g, "-***-"));
} else if (/-[0-9]{4}-/.test(phoneStr)) {
//00-0000-0000
maskingPhoneStr = str.replace(phoneStr, phoneStr.replace(/-[0-9]{4}-/g, "-****-"));
}
} else {
let phoneStr = str.length < 11 ? str.match(/\d{10}/gi) : str.match(/\d{11}/gi);
if(this.checkNull(phoneStr) === true) {
return str;
}
if (str.length > 10) {
maskingPhoneStr = str.replace(phoneStr, phoneStr.toString().replace(/(\d{3})(\d{4})(\d{4})/gi, '$1****$3'));
} else {
maskingPhoneStr = str.replace(phoneStr, phoneStr.toString().replace(/(\d{3})(\d{3})(\d{4})/gi, '$1***$3'));
}
}
return maskingPhoneStr;
},
name: function (str) {
if(this.checkNull(str) === null || this.checkConfigEnable() === false) {
return str;
}
const pattern = new RegExp('(?<=.{' + Math.floor((str.length / 2) + 1) + '}).', 'gi');
return str.length > 2 ? str.replace(pattern, "*") : str.replace(/(?<=.)./gi, "*");
},
//주민등록번호
licenseSI : function (str) {
if (this.checkNull(str) === true || this.checkConfigEnable() === false) {
return str;
}
let onlyNumberStr = str.replace(/[^0-9]/g, "");
let licenseSILength = 13;
if (onlyNumberStr !== licenseSILength) {
return str;
}
return this.replaceText(str, 6, "*");
},
accountNumber: function (str) {
if (this.checkNull(str) === true || this.checkConfigEnable() === false) {
return str;
}
return this.replaceText(str, 6, "*");
},
birthDate: function (str) {
if (this.checkNull(str) === true || this.checkConfigEnable() === false) {
return str;
}
return this.replaceText(str, 4, "*");
},
replaceText: function (str, length, replaceStr) {
if(this.checkConfigEnable() === false) {
return str;
}
let replaceStrFullText = "";
for(var i = 0; i < length; i++) {
replaceStrFullText = replaceStrFullText.concat(replaceStr);
}
const pattern = new RegExp('.{' + length + '}$');
return str.replace(pattern, replaceStrFullText);
},
}
다른 분이 만든 코드에서 필요한 내용만 정리했다.
내가 참고한 사이트.
https://goddaehee.tistory.com/236
'Javascript' 카테고리의 다른 글
Visual Studio Node.js 1:1채팅(3) Client (0) | 2020.07.30 |
---|---|
Visual Studio Node.js 1:1 채팅(2) Server.js (0) | 2020.07.30 |
Visual Studio Node.js 1:1 채팅하기(1) (0) | 2020.07.30 |
Node.js 윈도우 코드 환경 Visual Studio 2019 (0) | 2020.07.30 |
01.Javascript 모듈화(ES6 ECMAScript6) (0) | 2020.06.08 |