Một trình duyệt báo Europe/London trong khi cơ sở dữ liệu IP đặt yêu cầu ở America/New_York. Đó là sự bất đồng giữa hai quan sát, và đáng để ghi lại. Đó không phải bằng chứng rằng khách truy cập dùng VPN, và coi nó như bằng chứng chính là chỗ mà hầu hết các triển khai sai. Phép so sánh dưới đây giữ hai giá trị và các kiểu hỏng của chúng tách biệt.

Hai quan sát với chủ sở hữu khác nhau

Giá trị từ trình duyệt là một cài đặt: múi giờ mà hệ điều hành hoặc người dùng chọn để định dạng ngày. Giá trị từ cơ sở dữ liệu là một ước lượng gắn với mạng IP, do nhà cung cấp ánh xạ các khối địa chỉ sang địa điểm tạo ra. Cả hai đều không phải tuyên bố đã xác thực về việc khách truy cập đang đứng ở đâu, và cả hai đều không biết yêu cầu đã đi qua đường mạng nào.

Vì chủ sở hữu khác nhau, hai giá trị có thể lệch nhau vì những lý do không liên quan gì đến công cụ riêng tư. Một người đi du lịch giữ múi giờ nhà, một laptop công ty bị ghim theo giờ trụ sở, một liên kết vệ tinh có lối ra khu vực, hay một hàng cơ sở dữ liệu cũ đều tạo ra sự không khớp.

Mỗi giá trị thực sự được tạo ra như thế nào

Trình duyệt có thể đọc múi giờ đã phân giải bằng new Intl.DateTimeFormat().resolvedOptions().timeZonenew Intl.DateTimeFormat().resolvedOptions().timeZone

, trả về một định danh IANA suy ra từ cài đặt của bộ định dạng. Nó không xin quyền vị trí và không hỏi GPS. Trên máy chủ, hãy phân giải địa chỉ khách từ cấu hình proxy tin cậy của bạn, rồi tra cứu nó tại một nhà cung cấp đã được phê duyệt. Tiêu đề chuyển tiếp do khách truy cập cung cấp không tự động là địa chỉ đó.vpnDetectedLưu hai quan sát thành các trường riêng biệt cùng thời điểm quan sát và kết quả tra cứu. Đặt tên trường suy ra là

vpnDetected

khi phép tính chỉ là so sánh múi giờ sẽ nhúng một kết luận vào phép đo và khiến việc rà soát sau này khó hơn.Sự khớp và không khớp chứng minh điều gì
Quan sátĐiều còn bỏ ngỏ
Múi giờ được báo khác nhauDu lịch, một cài đặt được giữ lại, một cổng doanh nghiệp, một proxy hoặc một lỗi cơ sở dữ liệu đều có thể tạo ra điều này.
Cùng múi giờ được báoLối ra VPN có thể nằm trong múi giờ của người dùng, nên sự khớp không xác lập kết nối trực tiếp.

Một giá trị bị thiếu hoặc không hợp lệ

Phép so sánh không khả dụng, mà đó không phải khớp cũng không phải không khớp.

Tính bất đối xứng quan trọng hơn bảng gợi ý. Sự không khớp có nhiều cách giải thích vô tội, trong khi sự khớp có ít nhất một cách giải thích có tội, nên không hướng nào chống đỡ một quy tắc tuyệt đối. Ghi chú về độ chính xác của chính nhà cung cấp mô tả độ chính xác hạn chế và dữ liệu thiếu, và chỉ ra rằng một dịch vụ ẩn danh có thể phơi bày vị trí máy chủ của nó thay vì vị trí người dùng.

Đó là lý do tín hiệu này thuộc về một điểm rủi ro có lý do được ghi lại và trạng thái không xác định rõ ràng, không phải một giá trị boolean điều khiển truy cập.

Độ lệch UTC không phải lối tắt

So sánh độ lệch thay vì định danh múi giờ không sửa được suy luận. Hai múi giờ khác nhau có thể chia sẻ một độ lệch trong một phần năm, và cùng một múi giờ có thể đổi độ lệch ở ranh giới giờ mùa hè. Nếu một tính năng thực sự cần độ lệch để lập lịch, hãy tính nó cho thời điểm cụ thể thay vì lưu một con số rồi dùng lại làm bằng chứng nhận dạng.

So sánh chuỗi có cái bẫy riêng: hai cách viết của cùng một múi giờ, hoặc một bí danh cũ, khác nhau như văn bản dù mô tả cùng một cài đặt. Hãy xác thực các định danh và so sánh qua cách xử lý múi giờ của nền tảng thay vì khớp chuỗi thô.

Chặn hay cho điểm: chọn phản ứng một cách có chủ đích

Bài viết liên quan