🛡 텍스트 민감정보 마스킹
텍스트의 이메일 · 전화번호 · IP · 카드번호 · JWT · AWS 키 · Bearer 토큰을 자동 검출 · 마스킹.
🔒 개인정보 보호 (중요)
- ・민감정보를 다루므로 모든 처리는 브라우저 내 JavaScript에서 완결
- ・입력 텍스트 · 검출 결과는 서버로 전송되지 않습니다
- ・개발자 도구 Network 탭에서 통신 없음 확인 가능
- ・저장 로그 · 기록 · DB 없음
검출 결과 (0)
마스킹 후 텍스트
📖 자주 걸리는 지점
텍스트에서 메일 주소 · 전화번호 · IP · 카드 번호 · JWT · AWS 키 · Bearer 토큰 등을 정규식으로 검출하고 치환 · 부분 마스킹 · 삭제 · 라벨화 중 하나로 숨깁니다. 처리는 브라우저 안에서 끝납니다. 검출은 형식이 정해져 있는 것에 한합니다 — 검출 0 건은 기밀이 없다는 의미가 아닙니다. 성명 · 주소 · 사내의 식별자처럼 형태가 정해지지 않은 것은 원리적으로 잡을 수 없습니다.
| 사례 | 무슨 일이 일어나는가 | 어떻게 하면 되는가 |
|---|---|---|
| 검출되지 않은 기밀이 그대로 남는다 | 정규식이 잡을 수 있는 것은 서식이 정해져 있는 것뿐입니다. 따라서 성명 · 주소 · 사내의 안건 번호 · URL 안에 묻힌 ID · Slack 의 채널 이름 · 데이터베이스 이름 · 서버의 호스트명은 그대로 남습니다. 특히 놓치기 쉬운 것이 파일 경로로 C:\Users\yamada\Desktop\... 나 /home/tanaka/ 에는 실명이 들어 있습니다. 에러 로그의 스택 트레이스에는 내부의 호스트명 · 디렉터리 구성 · 쓰고 있는 라이브러리의 버전이 통째로 나와 있으며 이는 공격자에게 유용한 정보입니다. |
작업을 시작하기 전에 이 텍스트에 무엇이 들어 있는지를 열거하세요 — 검출 결과를 보고 나서 생각하는 것으로는 늦고 도구가 찾은 것만이 기밀이라고 착각합니다. 열거한 뒤 도구가 잡지 못한 것은 손으로 치환하세요(에디터의 일괄 치환으로 충분합니다). 그리고 마스킹 후의 텍스트를 반드시 처음부터 끝까지 눈으로 읽으세요 — 긴 로그라면 적어도 맨 앞 · 맨 끝 · 에러의 앞뒤는 읽습니다. 로그를 공유하는 목적이 에러의 원인을 봐 달라는 것이라면 필요한 수십 줄만 잘라 내는 것이 가장 안전합니다 — 전문을 건넬 필요는 거의 없습니다. |
| 부분 마스킹에서 원래 값이 좁혀진다 | a***z@example.com 이나 090-****-5678 같은 부분 마스킹은 숨기기보다 후보를 좁히는 데 기여해 버리는 경우가 있습니다. 도메인이 남아 있으면 소속을 알 수 있고 뒤 4 자리가 남아 있으면 다른 어딘가에서 본 같은 번호와 맞춰 볼 수 있습니다. 카드 번호는 특히 위험해서 앞 6 자리(발행 회사)와 끝 4 자리가 남아 있으면 사이의 6 자리 중 한 자리는 체크 디지트이므로 실질 5 자리 = 10 만 가지입니다. 마스킹했으니 안전하다는 감각이 실제의 안전성보다 먼저 생기는 것이 이 방식의 가장 위험한 점입니다. |
공유처가 불특정하다면 완전 치환이나 라벨 치환을 고르세요 — [EMAIL] 이나 [CARD] 처럼 종별만 남기는 형태가 읽기 쉬움과 안전성의 양립으로는 최선입니다(무엇이 있던 자리인지는 알 수 있으므로 로그로서의 의미는 잃지 않습니다). 부분 마스킹이 타당한 것은 자신 또는 한정된 팀이 나중에 구분할 필요가 있는 경우뿐입니다 — 어느 사용자의 로그인지를 추적하고 싶다면 원래 값이 아니라 해시의 앞 몇 글자를 쓰는 편이 안전합니다(동일성은 유지되고 값은 복원할 수 없습니다). 망설여지면 라벨 치환으로 하세요 — 정보를 남기는 판단은 남기는 이유를 말할 수 있을 때만 하세요. |
| 값은 숨겼는데 구조에서 샌다 | JSON 로그에서 키 이름이 그대로 남아 있으면 "user_email": "***" 이라는 한 줄에서 거기에 메일 주소가 있었다는 것을 확실히 알 수 있습니다. 마스크의 글자 수가 원래 길이 그대로라면 값의 길이도 샙니다 — 토큰이라면 종류를 추정할 수 있고 비밀번호라면 전수 조사의 범위가 좁아집니다. 같은 이유로 같은 값이 여러 곳에 있었을 때 마스킹 후에도 같은 문자열이 되어 있으면 동일하다는 것이 전달됩니다 — 이는 로그의 추적에는 편리하지만 이 두 요청은 같은 인물이라는 정보를 건네고 있는 것이 됩니다. |
키 이름째 떨어뜨리거나 라벨 치환으로 의도적으로 정보량을 맞추세요 — [EMAIL] 이라는 고정 길이 라벨로 치환하면 길이의 정보는 사라지고 종별만 남습니다. 동일성을 남길지 여부는 의식해서 고르세요 — 장애 조사에서 같은 사용자의 일련의 요청을 쫓고 싶다면 남길 가치가 있지만 외부에 공유한다면 동일성 그 자체가 개인의 행동 이력이 됩니다. 최종적인 판단은 이 텍스트를 누가 읽는가로 정해집니다 — 사내 채널과 공개 이슈와 벤더로의 송부는 허용할 수 있는 입도가 다릅니다. 공유처를 먼저 정하고 나서 마스킹의 강도를 고르세요. |
이 도구는 공개 전의 마지막 체크이지 로그 설계의 대체가 아닙니다. 본질적인 대책은 애초에 기밀을 로그에 쓰지 않는 것입니다 — 구조화 로그를 쓰고 출력 단계에서 필드 단위의 마스킹을 넣으세요(많은 로깅 라이브러리에 필터의 구조가 있습니다). 이유는 단순해서 한 번 써 나간 로그는 로그 집약 기반 · 백업 · 모니터링 도구 · 알림 통지로 복제되므로 나중에 지우는 것은 실질적으로 불가능하기 때문입니다. 나중에 마스킹하면 된다는 운용은 성립하지 않습니다. 아울러 스크린숏에는 이미지 모자이크 를 쓰세요 — 다만 모자이크나 블러가 아니라 검게 칠하기를 고를 것. 그리고 이 페이지의 처리는 모두 브라우저 안에서 끝나고 입력은 전송되지 않습니다 — 개발자 도구의 Network 탭에서 확인할 수 있습니다. 기밀을 다루는 도구에 대해서는 이 확인을 습관으로 하세요 — 전송하지 않습니다 라는 표시만을 믿을 이유는 없습니다.
📖 사용법
-
1
텍스트 붙여넣기로그나 텍스트를 입력란에 붙여넣기.
-
2
검출 종류와 방법 선택필요한 것만 ON, 마스킹 방법 선택.
-
3
검출 · 마스킹버튼 클릭 후 결과 확인, 복사.
❓ 자주 묻는 질문
텍스트가 서버로 전송됩니까?
카드번호 검출 정확도는?
부분 vs 완전 마스킹 어느 쪽이 안전?
🐛 이 도구에서 문제가 발생했나요?
무료 · 가입 불필요. 재현 절차만이라도 도움이 됩니다. 보고는 운영자에게 직접 전달되어 개선에 사용됩니다.
보고 감사합니다!
운영자에게 전달되었습니다. 개선에 사용됩니다.