VPN 서버를 바꾸면 쇼핑몰에서 로그아웃되나요?
새 출구 주소가 쿠키 저장소를 비우지는 않습니다. 먼저 네트워크 경로, 로그인된 세션, 저장된 사이트 데이터 중 무엇을 시험하는지 정하세요.
다른 탭에서 쇼핑몰을 열어 둔 채 VPN 출구를 바꿔도 장바구니는 보통 그대로 있습니다. 이것은 VPN의 고장이 아니라 브라우저가 시킨 대로 정확히 하는 것입니다. 쿠키는 브라우저가 보내며, 새로운 네트워크 경로는 브라우저가 저장하는 것을 바꾸지 않습니다. «사이트가 아직 나를 안다»는 말 뒤에는 세 가지 다른 질문이 숨어 있고, 답은 실제로 어느 것을 묻고 있느냐에 달려 있습니다.
세 가지 질문, 하나의 증상
첫째, 사이트가 저장된 쿠키를 인식하는가? 둘째, 단일 쿠키와 무관하게 유지되는 로그인된 계정을 인식하는가? 셋째, 저장된 상태가 아니라 브라우저나 기기 자체의 무언가를 인식하는가? 각각은 고유한 시험과 고유한 해법을 가집니다.
| What you changed | What it actually tests |
|---|---|
| VPN exit address | Whether the site treats a different network origin differently |
| Cookie jar for one site | Whether a stored identifier was doing the recognition |
| Browser profile or account | Whether identity, rather than storage, links the visits |
혼란의 대부분은 첫째를 바꾸고 둘째도 따라올 것이라 기대하는 데서 생깁니다. 네트워크 주소와 브라우저 저장소는 별개의 시스템이며, 같은 페이지가 우연히 둘 다 사용할 뿐입니다.
쿠키가 실제로 나르는 것
RFC 6265에 규정된 HTTP 상태 관리는 의도적으로 단순합니다. 서버가 범위와 함께 이름과 값을 설정하면, 브라우저는 그 범위에 맞는 요청에 값을 돌려보냅니다. 값은 세션 식별자, 설정, 또는 서버가 장바구니 레코드에 대응시키는 불투명한 토큰일 수 있습니다. 이 메커니즘 어디에도 클라이언트 주소는 언급되지 않습니다.
이런 설계 덕분에 일반적인 로그인과 장바구니가 네트워크 변경을 견디며, 같은 이유로 추적자에게도 견딥니다. 같은 메커니즘이 두 목적에 모두 쓰이며 둘을 구분하지 않습니다. 프로토콜에는 클라이언트 주소를 위한 필드가 없으므로 새 출구가 무효화할 것은 없습니다. 쿠키를 네트워크 출처에 묶고 싶은 사이트라면 그 논리를 스스로 추가해야 합니다.
사이트가 쿠키를 돌려보낼 때 서버는 그 값이 가리키는 레코드를 조회합니다. 요청이 지나온 경로를 바꾸어도 그 조회는 바뀌지 않으며, 장바구니 관찰에 대한 설명은 이것이 전부입니다.
당신의 시험이 무엇을 측정하는지 정하세요
무엇이든 바꾸기 전에 시작 상태를 적어 두세요. 어떤 브라우저 프로필, 어떤 계정, 어떤 사이트 데이터, 어떤 네트워크 경로인지. 그런 다음 그중 정확히 하나만 바꾸고 관찰하세요. 출구 주소와 브라우저 프로필을 동시에 바꾸는 시험은 둘 중 어느 것에 대해서도 아무것도 증명하지 못합니다.
curl -sS -c /tmp/jar.txt -b /tmp/jar.txt -o /dev/null -w '%{http_code}\n' https://shop.example/cart
curl -sS -c /tmp/jar.txt -b /tmp/jar.txt -o /dev/null -w '%{http_code}\n' --interface 198.51.100.44 https://shop.example/cart두 명령 모두 같은 쿠키 파일을 재사용하며, 두 번째는 호스트가 허용하는 곳에서 다른 로컬 소스 주소를 강제합니다. 두 경우 모두 장바구니 응답이 같은 이유는 서버가 다른 클라이언트 신원을 본 적이 없고 오직 다른 경로만 보았기 때문입니다. 재현 가능한 한 쌍의 요청에서 보여 주는 메커니즘이 바로 이것입니다.
저장된 상태 없이 사이트가 당신을 인식하는지 보는 것이 목적이라면 그 사이트의 데이터를 지우고 반복하세요. 그래도 인식한다면 다음 용의자는 쿠키가 아니라 로그인된 계정, 당신이 따라간 링크, 또는 브라우저 특성입니다.
네트워크가 아니라 올바른 상태를 지우세요
한 사이트의 저장소를 제거하는 일은 브라우저 자체의 제어 기능에 속하며, 부작용으로 로그아웃되거나 설정이 초기화되는 경우가 많습니다. 계정이나 서비스가 이미 보관 중인 기록은 삭제하지 않습니다. 그것에는 서비스 자체의 절차가 필요합니다.
사이트 간 제한은 문제의 다른 부분을 다룹니다. 브라우저는 삽입된 서비스가 사이트 사이에 공유하던 저장소를 차단하거나 분할할 수 있지만, 퍼스트파티 로그인은 계속 작동합니다. 따라서 로그인 성공은 사이트 간 추적이 작동한다는 증거가 아닙니다.
시크릿 창도 사람들이 기대하는 것보다 범위가 좁은 도구입니다. 사이트는 세션 중에도 쿠키를 설정할 수 있고, 로그인은 여전히 계정을 식별합니다. 임시 상태를 버리는 것은 시크릿 세션을 끝내는 일이며, 이는 탭 하나가 아니라 모든 시크릿 창을 닫아야 한다는 뜻입니다.
마지막으로, 핑거프린팅에 의한 식별을 첫 번째 설명이 아니라 가능성으로 다루세요. 기기와 브라우저 특성은 저장된 쿠키 없이도 방문을 연결할 수 있고, 저장소를 지워도 그것에는 영향이 없습니다. 먼저 단순한 원인을 확인하고, 그다음 조사를 넓히며, 다음 비교가 의미 있도록 어떤 상태를 바꿨는지 기록해 두세요.