본문 바로가기

JavaScript] 개인정보 마스킹(이름, 전화번호 등등 숨기기)

반응형

개인정보 마스킹

보안이 중요시 되기 때문에 이름, 계좌번호, 전화번호 등등의 개인정보에 마스킹은 필수가 되어가고 있다.

 

성명 마스킹

성명의 맨 앞과 맨 뒤 1자리씩 제외하고 나머지는 *로 치환된다.
이름이 외자인 경우에 성은 노출이 되고 이름은 *로 치환된다.
성이 2자인 경우에는 성과 이름 구분없이 성명의 맨 앞과 맨 뒤를 제외한 나머지가 *로 치환된다.
예시) 선우길동 → 선**동
성만 입력 또는 이름이 외자인데 이름만 입력하여 이름값이 1자리수라면 해당 이름이 그대로 노출된다.

function maskName(name) {
    if (name.length === 1) {
        return name;
    } else if (name.length === 2) {
        return name.slice(0, 1) + '*';
    } else {
        return name.slice(0, 1) + '*'.repeat(name.length - 2) + name.slice(-1)
    }
}

maskName('홍') // 홍
maskName('홍길') // 홍*
maskName('홍길동') // 홍*동
maskName('선우길동') // 선**동

전화번호 마스킹

전화번호는 11자리의 숫자로만 존재해야 한다.
가운데 4자리를 *로 치환한다.

function maskCellPhone(phoneNumber) {
    // 휴대폰 번호가 11자리인지 확인
    if (phoneNumber.length !== 11) {
        console.error("휴대폰 번호는 11자리여야 합니다.");
        return phoneNumber;
    }

    // 가운데 4자리를 '*'로 대체
    var maskedNumber = phoneNumber.substring(0, 3) + '****' + phoneNumber.substring(7);
    return maskedNumber;
}

maskCellPhone('01012345678') // 010****5678
// 전화번호에 하이픈이 있는경우 아래 함수를 이용하여 하이픈 제거 후 마스킹 적용
maskCellPhone(convertToNumer('010-1234-5678')) // 010****5678

전화번호 하이픈 제거

만약 전화번호에 하이픈('-')이 있다면 아래 함수를 통해 하이픈을 제거하여 사용 할 수 있다.

function convertToNumer(phoneNumber) {
    // '-' 제거
    var numericNumber = phoneNumber.replace(/-/g, '');
    return numericNumber;
}

convertToNumer('010-1234-5678') // 01012345678

계좌번호 마스킹

계좌번호 앞 3자리와 뒤 3자리를 제외한 나머지 숫자를 '*'로 치환된다.

function maskAccountNumber(accountNumber) {
    const maskedNumber = accountNumber.slice(0, 3) + '*'.repeat(accountNumber.length - 6) + accountNumber.slice(-3);
    return maskedNumber;
}
maskAccountNumber('234567040975542') // 234*********542
반응형

댓글


Copyright ⓒ SmartWeb All rights reserved.