본문 바로가기

개발/sql

개인정보 보호 처리 sql

1. 개인정보 처리를 안해서 급하게 구글보고 찾아서 한 첫번째 쿼리

<statement name ="정보저장">

INSERT 테이블명
(
고유아이디,
고객명,
휴대전화 앞자리,
휴대전화 중간자리,
휴대전화 뒷자리,
메일,
기본주소,
상세주소)
VALUES(
${고유아이디},
substr(${고객명},1,1)||lpad('*',length(${고객명})-2,'*')||substr(${고객명}, length(${고객명}),1),--고객명
${휴대전화 앞자리},
'****',
${휴대전화 뒷자리},
substr(${메일},1,1)||lpad('*', REGEXP_INSTR(${메일}, '@')-2,'*')||substr(${메일}, REGEXP_INSTR(${메일}, '@'),20), --메일
${기본주소},
'******'
)

고객명은 처음과 끝자리를 표시하고 중간글자는 전부 '*'로 표기하게 만들었다.

결과 외자는 그대로 표시되는 불상사가 일어났다.

 

그래서 처음과 마지막 글자는 표시하고 그 사이에 '*'를 넣었다.

<statement name ="정보저장">

INSERT 테이블명
(
고유아이디,
고객명,
휴대전화 앞자리,
휴대전화 중간자리,
휴대전화 뒷자리,
메일,
기본주소,
상세주소)
VALUES(
${고유아이디},
SUBSTR(${고객명}, 1, 1) || '*' || SUBSTR(${고객명}, LENGTH(${고객명}), LENGTH(${고객명})),--고객명
${휴대전화 앞자리},
'****',
${휴대전화 뒷자리},
substr(${메일},1,1)||lpad('*', REGEXP_INSTR(${메일}, '@')-2,'*')||substr(${메일}, REGEXP_INSTR(${메일}, '@'),20), --메일
${기본주소},
'******'
)

 

아차...공백처리를 잊어버려서 마지막에 ' '이 있을 경우 frastName밖에 나오지 않게 되었다.

처음에는 replace 를 사용해서 문자치환을 하려고 했지만 상사가 trim을 사용하라고 해서 최종적으로 trim으로 바뀌었다.

나중에 이 글을 볼 때를 대비해서 replace 사용법에 대해 말하자면

SUBSTR(replace(${고객명},' ',''), 1, 1) || '*' || SUBSTR(replace(${고객명},' ',''), LENGTH(replace(${고객명},' ','')), LENGTH(replace(${고객명},' ','')))

이런식으로 만들려고 했다.

 

최종 쿼리는 아래와 같다.

<statement name ="정보저장">

INSERT 테이블명
(
고유아이디,
고객명,
휴대전화 앞자리,
휴대전화 중간자리,
휴대전화 뒷자리,
메일,
기본주소,
상세주소)
VALUES(
${고유아이디},
SUBSTR(trim(${고객명}), 1, 1) || '*' || SUBSTR(trim(${고객명}), LENGTH(trim(${고객명})), LENGTH(trim(${고객명}))),--고객명
${휴대전화 앞자리},
'****',
${휴대전화 뒷자리},
substr(${메일},1,1)||lpad('*', REGEXP_INSTR(${메일}, '@')-2,'*')||substr(${메일}, REGEXP_INSTR(${메일}, '@'),20), --메일
${기본주소},
'******'
)

 

테스트를 꼼꼼히 하자...