Fusul orar al browserului față de locația IP: un semnal de risc comparat
Fusul browserului și fusul derivat din IP măsoară lucruri diferite. Compară ce poate dovedi fiecare înainte ca o nepotrivire să devină verdict de VPN în modelul tău de risc.
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ție | Ce lasă nerezolvat |
| Fusuri raportate diferite | O 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 raportat | O 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