- 문제점 : 서비스 내 마스킹 처리 부재로 개인정보가 노출 위험성이 존재
- 해결방안 : 개인정보, 사용자 식별 정보 등 중요한 값은 노출되지 않도록 해야 한다. 부득이하게 중요한 값이 포함되어야 한다면 마스킹 혹은 암호화를 하여야 한다.
1. preg_replace 정규식 이용 치환 함수
function maksing($name){
// 뒤에 두글자 *로 마스킹
$fnl = preg_replace('/.(?!..)/u', '*', $name);
return $fnl;
}
"McDonald" > "McDona**"
"감자" > "**"
"홍길동" > "홍**"
"아이스크림" > "아이스**"
2. substr_replace 문자열 치환 함수
function masking($name){
//index 3번 문자부터 3바이트 문자 *로 변경
$fin = substr_replace($name, "*", 3, 3);
return $fin;
}
substr_replace("문자열", "변경할 문자", 시작 인덱스, 길이);
substr_replace는 바이트를 기준으로 하기 때문에 아래처럼 영어와 한글이 다르게 적용된다.
시작인덱스 3, 길이 3인 경우
"McDonald" > "McD*ld"
"감자" > "감*"
"홍길동" > "홍*동"
"아이스크림" > "아*스크림"
3. for문으로 '*' 찍기
function masking($name){
$len = mb_strlen($name, 'utf-8');
$front = mb_substr($name, 0, 1, 'utf-8');
if($len <= 2){
return $front.'*';
}
$back = mb_substr($name, $len-1, 1, 'utf-8');
$for($i=1; $i<$len-1; $i++){
$front .= '*';
}
return $front.$back;
}
이 방법을 제일 자주 사용하는 것 같다.
"McDonald" > "M******d"
"감자" > "감*"
"홍길동" > "홍*동"
"아이스크림" > "아***림"