Un browser raportează Europe/London, în timp ce o bază de date IP plasează cererea în America/New_York. Aceasta este o neînțelegere între două observații și merită înregistrată. Nu este dovada că vizitatorul folosește un VPN, iar tratarea ei ca dovadă este locul unde majoritatea implementărilor greșesc. Comparația de mai jos ține cele două valori, și modurile lor de eșec, separate.

Două observații cu proprietari diferiți

Valoarea browserului este o setare: fusul pe care sistemul de operare sau utilizatorul l-a ales pentru formatarea datelor. Valoarea bazei de date este o estimare atașată unei rețele IP, produsă de un furnizor care mapează blocuri de adrese către locuri. Niciuna nu este o afirmație autentificată despre unde se află vizitatorul, și niciuna nu știe ce cale de rețea a urmat cererea.

Deoarece proprietarii diferă, cele două valori pot diverge din motive care nu au nimic de-a face cu uneltele de confidențialitate. Un călător care păstrează fusul de acasă, un laptop de companie fixat pe ora sediului, o legătură prin satelit cu ieșire regională sau un rând învechit din baza de date produc toate o nepotrivire.

Cum este produsă de fapt fiecare valoare

Un browser poate citi fusul rezolvat cu new Intl.DateTimeFormat().resolvedOptions().timeZonenew Intl.DateTimeFormat().resolvedOptions().timeZone

, care returnează un identificator IANA derivat din setările formatorului. Nu cere permisiune de locație și nu consultă GPS. Pe server, rezolvă adresa clientului din configurația de proxy de încredere, apoi caută-o la un furnizor aprobat. Un antet de redirecționare furnizat de vizitator nu este automat acea adresă.vpnDetectedStochează cele două observații ca câmpuri separate, împreună cu momentul observației și rezultatul căutării. Denumirea câmpului derivat

vpnDetected

atunci când calculul este doar o comparație de fusuri strecoară o concluzie într-o măsurătoare și face revizuirea ulterioară mai dificilă.Ce dovedesc potrivirea și nepotrivirea
ObservațieCe lasă nerezolvat
Fusuri raportate diferiteO călătorie, o setare păstrată, o poartă de business, un proxy sau o eroare de bază de date le pot produce pe toate.
Același fus raportatO ieșire VPN poate sta în fusul utilizatorului, așa că potrivirea nu stabilește o conexiune directă.

O valoare lipsește sau este invalidă

Comparația nu este disponibilă, ceea ce nu este nici potrivire, nici nepotrivire.

Asimetria contează mai mult decât sugerează tabelul. O nepotrivire are multe explicații nevinovate, în timp ce o potrivire are cel puțin una vinovată, așa că niciuna dintre direcții nu susține o regulă categorică. Notele de precizie ale furnizorului descriu precizie limitată și date lipsă și arată că un serviciu de anonimizare poate expune locația serverului său, nu pe cea a utilizatorului.

De aceea semnalul aparține unui scor de risc cu un motiv înregistrat și o stare necunoscută explicită, nu unui boolean care controlează accesul.

Decalajele UTC nu sunt o scurtătură

Compararea decalajelor în locul identificatorilor de fus nu repară inferența. Două fusuri diferite pot împărți un decalaj o parte a anului, iar același fus poate schimba decalajul la granița orei de vară. Dacă o funcție are într-adevăr nevoie de un decalaj pentru programare, calculează-l pentru momentul specific în loc să stochezi un singur număr și să-l refolosești ca dovadă de identitate.

Compararea șirurilor are propria capcană: două grafii ale aceluiași fus, sau un alias vechi, diferă ca text deși descriu aceeași setare. Validează identificatorii și compară prin tratarea fusurilor orare a platformei, nu prin potrivirea șirurilor brute.

Blochează sau punctează: alege răspunsul deliberat

Articole similare