1. 브라우저 핑거프린팅 개요


2. 핑거프린팅이 수집하는 주요 항목

  • navigator 관련 정보: navigator.plugins, navigator.languages, navigator.webdriver 등
  • 렌더링/그래픽 정보: canvas / WebGL 컨텍스트 정보, WEBGL_debug_renderer_info로 추출 가능한 GPU 정보
  • 환경 정보: 화면 해상도, 시간대, 브라우저 버전, 사용자 언어 등

3. navigator.webdriver와 자동화 브라우저 감지

  • navigator.webdriver
    • WebDriver 세션이 활성화되면 true로 설정되는 경우가 많음
    • 일반 사용자 환경에서는 보통 false 또는 undefined
  • 자동화 탐지 포인트
    • navigator.webdriver 가 true인 브라우저는 자동화 툴(예: Selenium)로 판정될 가능성 높음
    • navigator.plugins 가 비정상적으로 빈 배열인 경우 의심 포인트
    • navigator.languages 가 비정상적이거나 비어있는 경우 의심 포인트

4. Canvas / WebGL 기반 식별법

  • document.createElement('canvas').getContext('webgl') 또는 'experimental-webgl'로 컨텍스트 생성 후 렌더링 결과와 파라미터 수집
  • WEBGL_debug_render_info를 통해 GPU 제조사·모델 등 추가 정보 확인 가능
  • 이 방식은 브라우저와 하드웨어 조합에 따른 미세한 차이를 식별하는 데 효과적임

5. 서버측(백엔드) 봇 탐지 코드 포인트 (PHP 예시)

  • Null 병합 연산자 ?? (PHP 7+)
    • $ip = $_SERVER['REMOTE_ADDR'] ?? 'unknown'
    • 왼쪽 값이 존재하고 null이 아니면 해당 값 사용, 아니면 대체값 사용
  • stripos()
    • 대소문자 구분 없이 문자열 검색 시 사용
    • SQL injection 필터 우회 방지용 문자열 검사 시 유용
  • 삼항 연산자 (조건) ? 참 : 거짓
    • 예: $message = ($age >= 18) ? '성인입니다' : '미성년자입니다'
  • 예제 목적: 간단한 detect_selenium.php 구현에서 위 문법들을 조합해 봇 여부 판단 로직 구성 가능

6. 봇 탐지시 체크리스트

  • HTTP 헤더·User-Agent 패턴 이상 여부 확인
  • navigator 기반 값들(plugins, languages, webdriver)과 Canvas/WebGL 지문 비교
  • 요청 빈도, 행동 패턴(세션 지속시간, 페이지 전환 속도) 분석
  • IP·Geo 정보 및 프록시/데이터센터 IP 여부 확인
  • 의심 세션을 EventBridge나 로그로 내보내어 SIEM에서 상관분석 수행

7. 실습·테스트 도구 및 참고 리소스


8. 프라이버시·법적 고려사항

  • 핑거프린팅은 사용자 동의 없는 추적 문제와 관련해 GDPR, CCPA 등 규제 관점에서 민감할 수 있음
  • 사용자의 프라이버시를 존중하는 정책과 옵트아웃 경로 제공 권장

0개의 댓글