Lệch múi giờ: phép kiểm tra nhất quán rẻ nhất trên web

Trong mọi phép kiểm tra nhất quán mà một trang web có thể chạy, so sánh múi giờ là rẻ nhất. Nó chỉ cần một lời gọi JavaScript và một lần tra cứu mà máy chủ vốn đã làm. Nó cũng là một trong những lý do phổ biến nhất khiến một tài khoản bị xem xét lần hai.
Hai múi giờ, hai nguồn
Múi giờ thứ nhất đến từ địa chỉ của bạn. Máy chủ biết yêu cầu đến từ đâu và dùng cơ sở dữ liệu định vị địa lý để ánh xạ địa chỉ đó sang một khu vực và múi giờ của nó. Với một kết nối từ Paris, đó là Europe/Paris. Việc này diễn ra trên máy chủ; trình duyệt của bạn không có tiếng nói gì.
Múi giờ thứ hai đến từ trình duyệt của bạn. Intl.DateTimeFormat().resolvedOptions().timeZone trả về tên IANA mà hệ điều hành được cấu hình, và new Date().getTimezoneOffset() trả về độ lệch UTC hiện tại. Nếu máy được đặt ở Berlin, trang thấy Europe/Berlin, bất kể các gói tin đến từ đâu.
Vì sao chúng không khớp
Những lý do chân thật là đi du lịch, một chiếc laptop chưa bao giờ đổi vùng đồng hồ, và mạng công ty thoát ra ở một quốc gia khác. Lý do các trang web quan tâm là proxy: một trình duyệt ở nước này dùng địa chỉ ở nước khác, mà không ai nghĩ đến đồng hồ. Paris và Berlin có chung độ lệch, nên chỉ riêng độ lệch thì sẽ khớp; còn tên IANA thì không. Các phép kiểm tra so sánh tên sẽ bắt được điều này, đó là lý do một công cụ chẩn đoán hiển thị cả tên của trình duyệt lẫn tên của địa chỉ thay vì một độ lệch số.
Sự lệch nghĩa là gì
Riêng nó, không kết luận được gì. Rất nhiều người thật cũng gây ra nó. Nhưng đó là một tín hiệu rẻ, và các hệ thống chấm điểm cộng các tín hiệu rẻ lại với nhau. Một sự lệch cộng với địa chỉ được phân loại là hosting cộng với một candidate WebRTC ở nơi thứ ba là một câu chuyện khác với chỉ riêng sự lệch.
Làm cho chúng khớp
Có hai cách để có kết quả nhất quán. Đặt múi giờ của hệ điều hành khớp với địa chỉ, cách này được nhưng vụng về khi nhiều hồ sơ dùng các địa chỉ khác nhau. Hoặc để hồ sơ trình duyệt ghi đè múi giờ mà nó báo, đó là điều các trình duyệt chuyên dụng làm: múi giờ của hồ sơ đi theo địa chỉ mà nó được khởi chạy cùng, nên hai tên tự khớp nhau. Cách thứ hai cũng phải bao quát độ lệch hiện tại, các lần chuyển giờ mùa hè và chuỗi ngày tháng đã bản địa hóa, vì một script có thể so sánh tất cả chúng. Một hồ sơ báo Europe/Paris nhưng định dạng ngày với độ lệch của Berlin chỉ mới di chuyển sự mâu thuẫn đi chỗ khác.
Nên nhìn gì trong một báo cáo
Một công cụ chẩn đoán hiển thị “Múi giờ theo IP” và “Múi giờ” cạnh nhau, và đánh dấu khi chúng khác nhau, đang làm đúng điều mà phép kiểm tra của một trang web sẽ làm. Nếu chúng khớp, phép kiểm tra đạt. Nếu không, bạn biết nên đổi cái nào. Dù thế nào, chính phép so sánh mới hữu ích, chứ không phải điểm số gắn vào nó.


