브라우저 시간대와 IP 위치: 위험 신호 비교
브라우저 시간대와 IP에서 추정한 시간대는 서로 다른 것을 측정합니다. 불일치가 VPN 판정이 되기 전에 각각 무엇을 증명할 수 있는지 비교합니다.
브라우저는 Europe/London을 보고하는데 IP 데이터베이스는 그 요청을 America/New_York에 둡니다. 이것은 두 관측의 불일치이며 기록할 가치가 있습니다. 방문자가 VPN을 쓴다는 증거는 아니며, 이를 증거로 취급하는 것이 대부분의 구현이 잘못되는 지점입니다. 아래 비교는 두 값과 각각의 실패 방식을 분리해 둡니다.
소유자가 다른 두 관측
브라우저 값은 설정입니다. 운영체제나 사용자가 날짜 형식을 위해 고른 시간대입니다. 데이터베이스 값은 IP 네트워크에 붙은 추정치로, 주소 블록을 장소에 매핑하는 제공자가 만듭니다. 둘 다 방문자가 어디에 서 있는지에 대한 인증된 진술이 아니며, 요청이 어떤 네트워크 경로를 거쳤는지도 알지 못합니다.
소유자가 다르기 때문에 두 값은 프라이버시 도구와 무관한 이유로도 갈라질 수 있습니다. 집 시간대를 유지하는 여행자, 본사 시간에 고정된 회사 노트북, 지역 출구를 둔 위성 회선, 오래된 데이터베이스 행 모두 불일치를 만듭니다.
각 값이 실제로 만들어지는 방식
브라우저는 해석된 시간대를 다음으로 읽을 수 있습니다: new Intl.DateTimeFormat().resolvedOptions().timeZonenew Intl.DateTimeFormat().resolvedOptions().timeZone
. 이는 포매터 설정에서 파생된 IANA 식별자를 반환합니다. 위치 권한을 요청하지 않고 GPS도 참조하지 않습니다. 서버에서는 신뢰하는 프록시 구성에서 클라이언트 주소를 확인한 뒤 승인된 제공자에서 조회하십시오. 방문자가 제공한 포워딩 헤더가 자동으로 그 주소인 것은 아닙니다.vpnDetected두 관측을 관측 시각 및 조회 결과와 함께 별도 필드로 저장하십시오. 계산이 단지 시간대 비교일 뿐인데 파생 필드를
vpnDetected
| 라고 이름 붙이면 측정에 결론을 구워 넣고 이후 검토를 어렵게 만듭니다. | 일치와 불일치가 각각 증명하는 것 |
|---|---|
| 관측 | 해결되지 않고 남는 것 |
| 보고된 시간대가 다름 | 여행, 유지된 설정, 기업 게이트웨이, 프록시 또는 데이터베이스 오류 모두 이를 만들 수 있습니다. |
| 보고된 시간대가 같음 | VPN 출구가 사용자 시간대에 있을 수 있으므로 일치가 직접 연결을 입증하지는 않습니다. |
한 값이 없거나 유효하지 않음
비교가 불가능하며, 이는 일치도 불일치도 아닙니다.
비대칭성은 표가 시사하는 것보다 중요합니다. 불일치에는 무해한 설명이 많지만 일치에는 적어도 하나의 유죄 설명이 있으므로, 어느 방향도 단정적 규칙을 뒷받침하지 않습니다. 제공자 자신의 정확도 문서도 제한된 정밀도와 누락 데이터를 설명하며, 익명화 서비스가 사용자가 아니라 자신의 서버 위치를 노출할 수 있다고 지적합니다.
그래서 이 신호는 이유가 기록되고 명시적인 알 수 없음 상태를 가진 위험 점수에 속하며, 접근을 통제하는 불리언에 속하지 않습니다.
UTC 오프셋은 지름길이 아닙니다
시간대 식별자 대신 오프셋을 비교해도 추론은 고쳐지지 않습니다. 서로 다른 두 시간대가 연중 일부 기간에 같은 오프셋을 공유할 수 있고, 같은 시간대도 일광 절약 경계에서 오프셋이 바뀔 수 있습니다. 기능이 일정 예약을 위해 정말 오프셋을 필요로 한다면, 숫자 하나를 저장해 신원 증거로 재사용하지 말고 특정 시점에 대해 계산하십시오.
문자열 비교에는 자체 함정이 있습니다. 같은 시간대의 두 표기나 오래된 별칭은 같은 설정을 설명하면서도 텍스트로는 다릅니다. 식별자를 검증하고 원시 문자열을 맞추는 대신 플랫폼의 시간대 처리를 통해 비교하십시오.
차단할 것인가 점수화할 것인가: 대응을 의도적으로 선택하십시오