이메일 난독화: 2026년에 효과적인 방법은?

2 hours ago 1
  • 이메일 주소를 스팸 수집기로부터 보호하기 위해 다양한 HTML·CSS·JavaScript 난독화 기법을 실험해 차단율을 비교함
  • 426개 텍스트·399개 링크 표본을 대상으로 테스트한 결과, 대부분의 JS 기반·CSS·SVG 기법이 100% 차단율을 기록함
  • HTML 엔티티·URL 인코딩 같은 오래된 방식도 여전히 높은 차단 효과를 보였음
  • 반면 이미지 표시·기호 치환·텍스트 방향 반전 등은 접근성과 사용성을 심각하게 저해함
  • 2026년 기준으로는 JS 변환·AES 암호화·사용자 상호작용 방식이 가장 안전하고 실용적인 이메일 보호 수단으로 평가됨

이메일 주소 난독화 기법 비교 (2026년 기준)

  • 이메일 주소를 스팸 수집기(하베스터) 로부터 숨기기 위한 다양한 난독화 기법과 각 기법의 실제 효과를 통계로 제시
  • 각각의 이메일 주소를 다른 방식으로 보호한 뒤, 426개(텍스트)399개(링크) 표본을 대상으로 하베스터 접근 여부를 측정해 차단율 산출
  • 대부분의 JavaScript 기반 기법과 일부 CSS·SVG 기법이 100% 차단율을 기록
  • HTML 엔티티·URL 인코딩 같은 오래된 방식도 여전히 높은 차단율 유지
  • 일부 기법은 접근성이나 사용성을 심각하게 저해해 실사용에는 부적합

1. 일반 텍스트 이메일 보호 기법

  • 이메일 주소를 페이지에 직접 표시하되, 다양한 HTML·CSS·JS 기법으로 하베스터가 읽지 못하게 하는 방식
  • 여러 기법을 조합해 세그먼트별로 보호하면 효과 극대화 가능
  • 보호 없음 (No protection)

    • 차단율 0% (426명 중 0명 차단)
    • 이메일 주소가 그대로 노출되어 모든 하베스터에게 수집됨
  • HTML 엔티티 (HTML Entities)

    • 차단율 95%
    • 서버 측 라이브러리가 자동으로 디코딩하지만, 실제로는 대부분의 하베스터 차단
  • HTML 주석 (HTML Comments)

    • 차단율 99%
    • HTML 태그 해석이 약한 기본형 하베스터만 차단 가능
    • 단순하지만 여전히 높은 차단 효과 유지
  • HTML SVG

    • 차단율 100%
    • 이메일 주소를 SVG 객체 내부 텍스트로 숨김
    • 시각장애인용 스크린리더 접근 가능
    • <object> 요소 사용 필수, <img>나 인라인 SVG는 소스 노출 위험
    • 폰트 의존성이 있어 웹 폰트 지정 필요
  • CSS display:none

    • 차단율 100%
    • 스타일 규칙을 적용하지 못하는 하베스터의 한계를 이용
    • 접근성 유지 가능하며, 시각적 숨김 대신 display:none 사용 권장
  • JS 문자열 연결 (Concatenation)

    • 차단율 100%
    • 외부 의존성 없이 간단히 구현 가능
    • 이메일 전체가 HTML 소스에 존재하므로 보안상 취약
  • JS Rot18

    • 차단율 100%
    • ROT13과 유사한 문자 회전 암호 사용
    • 단순한 하베스터는 해독 불가하지만, JS를 무시하는 수집기에는 취약
  • JS 변환 (Conversion)

    • 차단율 100%
    • HTML에는 의미 없는 문자열만 포함하고, JS 함수가 이를 실제 이메일로 변환
    • 대부분의 하베스터는 DOM·JS 실행 불가로 복원 불가능
    • 간단하면서도 매우 효과적인 기법
  • JS AES 암호화

    • 차단율 100%
    • AES-256 암호화를 이용해 이메일 보호
    • 브라우저의 SubtleCrypto API 사용, HTTPS 환경에서만 작동
    • JS 파일 없이는 복호화 불가능
  • JS 사용자 상호작용 (User interaction)

    • 차단율 100%
    • 사용자가 페이지와 상호작용할 때만 이메일 표시
    • 하베스터는 DOM 실행 + 사용자 이벤트 시뮬레이션이 필요해 사실상 불가능
  • HTML 기호 치환 (Symbol substitution)

    • 차단율 96%
    • “AT”, “DOT” 등으로 치환
    • 사용자가 직접 수정해야 하므로 사용성 저하
  • HTML 지시문 (Instructions)

    • 차단율 100%
    • 이메일에 “remove the .fluff” 같은 수동 지시 포함
    • 사람이나 AI만 해석 가능하지만 사용자 불편
  • HTML 이미지

    • 차단율 100%
    • 이메일 주소를 이미지로 표시
    • 시각장애인 접근 불가, 복사 불가 등 사용성 붕괴
  • CSS content

    • 차단율 100%
    • ::after 가상요소로 이메일 표시
    • 시각적으로는 보이지만 복사 불가, HTML만으로도 복원 가능
    • 무용한 기법으로 평가
  • CSS 텍스트 방향 (Text direction)

    • 차단율 100%
    • direction: rtl로 문자열 반전
    • 하베스터가 CSS를 무시하면 쉽게 해독 가능
    • 텍스트가 거꾸로 복사되어 사용성 저하

2. 클릭 가능한 링크 보호 기법

  • mailto: 링크의 href 속성을 보호하는 방식
  • 링크 텍스트에 이메일이 포함될 경우, 별도의 텍스트 난독화 기법 병행 필요
  • 보호 없음

    • 차단율 0% (399명 중 0명 차단)
    • 이메일 주소 완전 노출
  • HTML 엔티티

    • 차단율 100%
    • 서버 측 자동 디코딩에도 불구하고 대부분의 하베스터 차단
  • URL 인코딩

    • 차단율 95%
    • 디코딩이 쉬우나 실제로는 대부분의 하베스터 차단
  • HTTP 리다이렉트

    • 차단율 100%
    • mailto: 링크를 일반 링크처럼 보이게 숨김
    • .htaccess에서 302 또는 301 리다이렉트 설정
    • nofollow, noindex로 검색엔진 인덱싱 방지
    • 메일 필드 자동 채움 시 QSA 플래그 필요
  • HTML SVG

    • 차단율 100%
    • 이메일 링크를 SVG 내부에 숨김
    • 접근성 유지, <object> 사용 필수
    • 폰트 지정 필요
  • JS 문자열 연결

    • 차단율 100%
    • 외부 의존성 없이 구현 가능
    • 이메일이 HTML에 직접 포함되어 안전하지 않음
  • JS Rot18

    • 차단율 99%
    • ROT13과 유사한 문자 회전
    • 단순한 하베스터는 해독 불가
  • JS 변환 (Conversion)

    • 차단율 100%
    • HTML에는 가짜 링크만 존재하고 JS가 이를 실제 mailto:로 변환
    • 하베스터는 HTML만 접근 가능하므로 복원 불가
    • 간단하면서도 매우 효과적인 기법
  • JS AES 암호화

    • 차단율 100%
    • AES-256으로 암호화된 이메일 링크
    • 브라우저의 SubtleCrypto API 사용, HTTPS 필요
  • JS 사용자 상호작용

    • 차단율 100%
    • 사용자가 페이지와 상호작용해야만 링크 활성화
    • 하베스터가 이를 재현하기 어려움

3. 비판 및 반론

  • “스패머는 웹을 긁지 않고 유출 데이터베이스를 구매한다”는 주장에 대해
    • 이 페이지의 이메일 주소들은 이 페이지에만 공개되었음에도 수천 건의 스팸을 받음
  • “보호 필요 없다”는 주장에 대해
    • 인기 콘텐츠는 집중적으로 수집되므로 바이럴 가능성을 고려하면 보호 필요
  • “스팸 필터만 있으면 된다”는 주장에 대해
    • 이 기법들은 오탐 없이 무료로 구현 가능, 필터와 병행 사용이 바람직
  • “기법이 알려지면 무용하다”는 주장에 대해
    • 수십 년간 동일한 기법이 여전히 유효함이 통계로 확인됨

4. 실험 방법론

  • 각 난독화 기법으로 보호된 이메일 주소를 실제로 공개해 하베스터용 허니팟으로 운영
  • 스팸이 도착하면 해당 주소의 보호 기법이 뚫린 것으로 간주
  • 스패머별로 메시지를 그룹화해 발신자 수 기준 통계 산출
  • 스팸 필터링이 통계를 왜곡하지 않도록 직접 메일 서버와 클라이언트 구축
  • 텍스트 기반과 링크 기반 하베스터가 다르므로 별도 통계로 분리
  • 표본 수는 아직 작지만, 링크가 늘어날수록 통계 신뢰도 향상 예상

결론

  • JS 기반 변환·암호화·사용자 상호작용 기법이 가장 높은 보안성과 접근성 제공
  • CSS display:noneSVG 객체 기법도 접근성과 차단율 측면에서 우수
  • 기호 치환, 이미지, 텍스트 방향 반전 등은 사용성을 심각하게 해치므로 비추천
  • 이메일 공개가 필요한 경우, 간단한 JS 변환 또는 AES 암호화 방식이 2026년 기준 가장 효과적인 선택임
Read Entire Article