피드로 돌아가기
I Can Finally Screen-Share My SQL Client Without Leaking Prod Data
Dev.toDev.to
Security

CSS Filter 기반 PII 마스킹 레이어 도입을 통한 데이터 유출 방지 설계

I Can Finally Screen-Share My SQL Client Without Leaking Prod Data

Rohith Gilla2026년 4월 13일7intermediate

Context

SQL Client 사용 중 스크린 공유나 데모 과정에서 PII(개인식별정보)가 노출되는 보안 취약점 존재. 기존 클라이언트들은 데이터 렌더링 시 평문 노출을 기본값으로 설정하여 사용자 실수에 의한 데이터 유출 위험이 높음.

Technical Solution

  • Case-insensitive RegExp 기반의 자동 마스킹 룰셋을 구축하여 email, token 등 주요 PII 컬럼 자동 식별
  • Zustand 상태 관리를 통해 탭 단위의 Masking State를 유지하고 Manual Masking과 Auto Masking의 Union 집합으로 최종 마스크 대상 결정
  • 'Fail Closed' 원칙을 적용하여 자동 룰과 수동 설정 충돌 시 보안성이 높은 자동 룰을 우선 적용하는 로직 설계
  • CSS filter: blur(5px)user-select: none을 조합하여 시각적 노출과 클립보드 복사를 동시에 차단하는 렌더링 레이어 구현
  • Alt key 조합의 Hover-to-peek 인터랙션을 통해 전체 데이터 노출 없이 특정 값만 선택적으로 확인하는 UX 최적화
  • 유저 정의 정규식 입력 시 발생 가능한 런타임 에러 방지를 위해 Regex 컴파일 단계에 try-catch 예외 처리 적용

- PII 노출 방지 설계 시 'Fail Closed' 원칙을 적용하여 보안 설정의 우선순위를 정의했는가 - 정규식 기반 자동화 도구 도입 시 Case-insensitivity를 고려하여 다양한 네이밍 컨벤션에 대응했는가 - 사용자 정의 입력값(정규식 등)이 전체 시스템 렌더링을 중단시키지 않도록 예외 처리 구조를 갖췄는가 - 단순 시각적 마스킹을 넘어 `user-select: none`과 같이 데이터 복제 경로까지 차단했는가

원문 읽기