[PHP] 이름 및 연락처 마스킹 처리

시작하기에 앞서..

원래 이 글은 제 예전 블로그인 티스토리에 올려놓은 글을 참조하여 재 작성한 글입니다.

‘누구나 만들 수 있는 함수 아니야?’

라고 많이들 생각하시겠지만, 운영 하지 않는 전 블로그의 해당 글 조회수는 월 50회가 거뜬히 넘습니다.
이에 검색을 통해 제 새로운 블로그에서도 같은 정보를 얻으실 수 있으면 좋겠다 싶어 글을 옮겨왔습니다.

masking(마스킹) 처리?

마스킹 처리란, 타인이 온전한 데이터를 봐서는 안될때 쉽게 노출되지 않게 하기 위하여
* 과 같은 특수문자를 데이터에 포함하여 노출시켜주는 일종의 보안 처리 방식입니다.
개인정보를 리스트화 하여 노출 시키거나, 본인이 아닌 타인에게 노출될 우려가 있을 시 주로 사용됩니다.

masking 함수

function masking($_type, $_data){
        $_data = str_replace('-','',$_data);
        $strlen = mb_strlen($_data, 'utf-8');
        $maskingValue = "";
         
        $useHyphen = "-";
 
        if($_type == 'N'){
            switch($strlen){
                case 2:
                    $maskingValue = mb_strcut($_data, 0, 3, "UTF-8").'*';
                    break;
                case 3:
                    $maskingValue = mb_strcut($_data, 0, 3, "UTF-8").'*'.mb_strcut($_data, 8, 11, "UTF-8");
                    break;
                case 4:
                    $maskingValue = mb_strcut($_data, 0, 3, "UTF-8").'**'.mb_strcut($_data, 12, 15, "UTF-8");
                    break;
                default:
                    $maskingValue = mb_strcut($_data, 0, 3, "UTF-8").'**'.mb_strcut($_data, 12, 15, "UTF-8");
                    break;
            }
        }else if($_type == 'P'){
            switch($strlen){
                case 10:
                    $maskingValue = mb_substr($_data, 0, 3)."{$useHyphen}***{$useHyphen}".mb_substr($_data, 6, 4);
                    break;
                case 11:
                    $maskingValue = mb_substr($_data, 0, 3)."{$useHyphen}****{$useHyphen}".mb_substr($_data, 7, 4);
                    break;
                default:
                    trigger_error('Not a known format parametter in function', E_USER_NOTICE);
                    break;
            }
        }else{
            trigger_error('Masking Function Parameter Error', E_USER_NOTICE);
        }
        return $maskingValue;
}

함수 파라미터 안내

$_type: ‘N’ 또는 ‘P’가 들어갑니다. ‘N’ 은 이름을 마스킹 할때, ‘P’는 연락처를 마스킹 할때 사용됩니다.
$_data: 이 파라미터엔 마스킹 처리가 될 데이터가 들어갑니다.

* $useHyphen 변수를 비우거나 {$useHyphen}을 지우는 방법으로 “01012345678” 과 같은 형식의 값을 받을 수도 있습니다.

사용 예제

– 위 함수를 사용하였을 때 나오는 결과를 아래에 기재하였습니다.
아래와 같은 마스킹 처리 효과를 보고 싶으실 때 위 함수를 사용하시면 좋을 듯 합니다.

echo masking('N', '홍길동');

= 홍*동

echo masking('N', '세바스찬');

= 세**찬

echo masking('P', '010-000-0000');

= 000-***-****

echo masking('P', '010-0000-0000');

= 000-****-****