---
title: "웹페이지 하나가 허락 없이 브라우저에서 알아낼 수 있는 것들"
published: 2026-05-08T12:37:05.000Z
canonical: https://jeff.news/article/2488
---
# 웹페이지 하나가 허락 없이 브라우저에서 알아낼 수 있는 것들

이 웹페이지는 사용자가 접속한 첫 순간 브라우저가 기본으로 넘겨주는 정보만으로 위치, 화면, 언어, GPU, 폰트, 배터리, 브라우저 지문 같은 단서를 얼마나 많이 만들 수 있는지 보여준다. 해킹이나 취약점이 아니라 표준 자바스크립트 API와 브라우저 동작만으로 가능한 일이라는 점이 핵심이다. 페이지는 일부 위험한 기법을 실행하지 않았다고 밝히지만, 다른 사이트는 같은 기능을 추적과 광고에 얼마든지 쓸 수 있다는 메시지를 던진다.

- 이 페이지의 메시지는 단순함. “당신이 허락하지 않아도 브라우저는 이미 꽤 많은 걸 말한다”임
  - 접속 직후 몇 밀리초 안에 브라우저가 넘겨준 정보만으로 페이지가 여러 관찰 결과를 구성함
  - 해킹, 취약점, 몰래 심은 악성코드가 아니라 표준 자바스크립트 API와 일반적인 브라우저 동작을 사용함
  - 글쓴이는 “모든 게 설계대로 작동한다. 문제는 그 설계다”라는 식으로 이 불편한 지점을 찌름

- IP 주소만으로도 위치와 인터넷 제공자 단서를 만들 수 있음
  - 모든 요청의 헤더에는 IP 주소가 따라감
  - 페이지는 이를 ip-api.com에 보내 도시와 인터넷 제공자 이름으로 변환한다고 설명함
  - 화면에는 첫 옥텟과 마지막 옥텟만 보여주지만, 나머지 값을 알 수는 있었다고 적음
  - GDPR에서는 추적에 쓰이는 IP 주소가 개인정보로 간주될 수 있음

- 브라우저 API는 생각보다 많은 장치 정보를 노출함
  - 화면, 브라우저, 언어, GPU, 코어 수, 배터리, 폰트, 사용자 선호 설정 같은 정보가 표준 API를 통해 관찰될 수 있음
  - 이 페이지는 모질라 문서에 공개된 일반 API를 사용한다고 밝힘
  - 즉 “위험한 사이트라서 특별히 당했다”가 아니라, 현대 브라우저가 제공하는 기능의 조합이 문제라는 얘기임

- 폰트 핑거프린팅은 오래된 추적 신호임
  - 설치된 폰트 조합은 렌더링된 텍스트 폭을 측정해서 추정할 수 있음
  - 이 기법은 2010년부터 문서화돼 있음
  - EFF의 도구는 내 브라우저가 얼마나 고유한지 보여주는데, 많은 브라우저는 쿠키 없이도 웹 전반에서 추적될 만큼 충분히 독특함
  - 폰트 조합은 그중에서도 강한 신호 중 하나로 꼽힘

> [!IMPORTANT]
> 프라이버시 리스크는 “쿠키를 막으면 끝”이 아님. 폰트, GPU, 화면, 언어, 시간대 같은 조합만으로도 사용자를 꽤 좁혀갈 수 있음.

- 캔버스 핑거프린팅(canvas fingerprinting)은 더 노골적인 예시임
  - 2014년 프린스턴 연구가 실제 웹에서 캔버스 핑거프린팅을 처음 문서화함
  - 당시 상위 10만 개 웹사이트 중 5퍼센트에서 발견됐다고 함
  - 방식은 숨겨진 이미지를 브라우저에 그리게 하고, 렌더링된 픽셀을 다시 읽어 식별자로 쓰는 것임
  - 이 페이지는 해당 기법을 실행하지 않았지만, 방문자의 브라우저는 그 기능을 지원한다고 설명함

- 클립보드 API도 “타이밍만 맞으면” 민감해질 수 있음
  - 클릭이나 탭 같은 사용자 제스처가 한 번 있으면 페이지가 마지막으로 복사한 내용을 읽도록 요청할 수 있음
  - 그 내용이 비밀번호, 주소, 메시지 초안일 수도 있음
  - 이 페이지는 요청하지 않았지만, 기능 자체는 현대 브라우저에 존재함

- 배터리 정보도 한때 추적 신호가 됐음
  - 2015년 “The Leaking Battery” 연구는 배터리 퍼센트와 방전 시간 조합이 방문자를 최대 30분 동안 추적할 만큼 고유할 수 있음을 보였음
  - 쿠키도, 계정도 필요 없었다는 점이 포인트임
  - 파이어폭스는 2016년에 해당 API를 제거했지만, 크롬과 엣지는 여전히 노출한다고 글은 설명함

- 실행하지 않았지만 더 찝찝한 기법도 소개됨. 파비콘으로 로그인 여부를 추정하는 방식임
  - 페이지가 여러 서비스의 파비콘 URL을 로드해보고 성공과 실패를 관찰함
  - 로그인 상태와 로그아웃 상태에서 다른 이미지가 돌아오면, 사용자가 특정 서비스에 로그인했는지 알 수 있음
  - 페이스북, 구글, X, 깃허브, 레딧, 링크드인 같은 서비스가 예시로 언급됨
  - 허가가 필요 없고, 문서화돼 있으며, 법적으로도 쓰일 수 있다는 점이 더 찜찜함

> [!WARNING]
> 브라우저에서 “권한 요청 팝업이 안 떴으니 안전하다”고 보기 어렵다. 권한 없이 가능한 관찰만으로도 추적 신호가 충분히 만들어질 수 있음.

- 페이지는 방문자별 16줄짜리 바코드도 만든다고 설명함
  - GPU, 폰트, 화면 크기, 언어, 시간대, 운영체제, 브라우저, 색상 깊이 같은 값에서 16개의 선 높이를 계산함
  - 같은 데이터면 같은 바코드가 나오고, 다른 방문자면 다른 바코드가 나올 가능성이 높음
  - 계산은 브라우저 안에서만 일어나고 전송하지 않는다고 밝힘

- 그래도 이 페이지는 “우리는 덜 했다”고 꽤 집요하게 밝힘
  - 런타임에 대규모 언어 모델(LLM)이 문장을 만들지 않고, 사람이 쓴 템플릿 중 조건에 맞는 문장을 고른다고 설명함
  - 서버로 보낸 이벤트는 도착과 완료, 총 2개뿐이라고 밝힘
  - 쿠키, 로컬스토리지, 세션스토리지, 인덱스드DB, 서비스워커 캐시는 쓰지 않는다고 함
  - 다만 호스팅 제공자의 기본 로그는 며칠 남을 수 있고, 이건 대부분의 사이트가 똑같이 가진 현실이라고 덧붙임

- 프론트엔드와 보안 개발자에게 이 글이 주는 교훈은 꽤 실용적임
  - 기능 하나하나는 합리적이어도, 조합하면 강한 식별자가 될 수 있음
  - 사용자에게 친절한 기능과 사용자를 추적 가능한 대상으로 만드는 기능 사이의 경계가 생각보다 얇음
  - 브라우저 API를 설계하거나 사용하는 쪽 모두 “이 값이 단독으로 무해한가”가 아니라 “다른 값과 결합하면 어떤 신호가 되는가”를 봐야 함

---

## 기술 맥락

- 이 글의 핵심 기술 선택은 공격 코드를 보여주는 게 아니라, 표준 브라우저 기능만으로 관찰 가능한 정보를 한 화면에 모은 거예요. 그래서 더 불편해요. 취약점을 패치하면 끝나는 문제가 아니라, 정상 동작의 조합이 추적 표면이 되거든요.

- 브라우저 핑거프린팅이 강한 이유는 신호 하나하나는 평범하지만 조합하면 고유성이 커지기 때문이에요. 화면 크기, 폰트, GPU, 언어, 시간대는 각각은 흔한 값이어도, 전부 합치면 특정 사용자를 꽤 좁혀갈 수 있어요.

- 캔버스나 폰트 측정이 자주 언급되는 이유는 렌더링 결과가 환경 차이를 은근히 많이 반영하기 때문이에요. 같은 자바스크립트와 같은 텍스트라도 운영체제, 그래픽 드라이버, 폰트 구성에 따라 결과가 조금씩 달라질 수 있거든요.

- 클립보드나 배터리 API 사례는 웹 플랫폼 설계의 트레이드오프를 잘 보여줘요. 웹앱에는 편리한 기능이지만, 광고 추적이나 세션 연결에 쓰이면 사용자 입장에서는 동의하지 않은 식별 채널이 돼요.

- 그래서 개발팀이 봐야 할 건 “우리가 쿠키를 쓰는가”만이 아니에요. 어떤 브라우저 API를 호출하는지, 그 값이 다른 분석 이벤트와 결합될 때 사용자를 재식별할 수 있는지까지 같이 봐야 해요.

## 핵심 포인트

- IP 주소, 브라우저 API, 폰트, 캔버스, 배터리, 화면 정보만으로 방문자를 상당히 구분 가능
- 캔버스 핑거프린팅은 2014년 프린스턴 연구에서 상위 10만 개 웹사이트 중 5퍼센트에서 관찰됨
- 배터리 API 조합은 2015년 연구에서 최대 30분 동안 쿠키 없이 방문자 추적 가능성을 보임
- 파비콘 요청을 이용해 사용자가 특정 서비스에 로그인했는지 감지하는 기법도 문서화돼 있음

## 인사이트

이 글의 무서운 점은 “악성 코드가 대단한 걸 훔쳤다”가 아니라 “브라우저가 원래 이렇게 많이 말한다”는 데 있음. 프론트엔드와 보안 쪽 개발자라면 기능 편의성과 프라이버시 노출 사이의 선을 다시 보게 되는 글임.
