Căn chỉnh bộ tính giờ với các quy định hạn chế tách biệt nhiều nguồn gốc

Trước phiên bản 91, độ phân giải bộ hẹn giờ trong Chrome bị giới hạn ở 5 micro giây trên máy tính (khi tính năng tách biệt trang web được bật) và 100 micro giây trên Android (khi tính năng này không được bật).

Kể từ phiên bản 91, sau một thay đổi về thông số kỹ thuật, Chrome sẽ hạn chế độ phân giải của trình hẹn giờ rõ ràng (performance.now(), performance.timeOrigin và các API hiệu suất khác hiển thị DOMHighResTimestamps) ở mức 100 micro giây trên các nền tảng. Bằng cách bật tính năng tách biệt nhiều nguồn gốc, các trang web có thể nới lỏng giới hạn xuống còn 5 micro giây bất kể nền tảng.

Việc tăng cường các tính năng mạnh mẽ hơn bằng cách bật tính năng tách biệt nhiều nguồn gốc là một phương pháp tương tự được đưa ra trên SharedArrayBuffer. Trạng thái tách biệt nhiều nguồn gốc là trạng thái một trang web được tách biệt với các nguồn gốc khác, ngoại trừ những nguồn gốc đã chọn sử dụng.

Tôi có cần làm gì không?

Có thể là không. performance.now() đã bị giới hạn ở độ phân giải thô hơn đáng kể trong các trình duyệt khác (ví dụ: 1 mili giây = 0,001 giây), vì vậy, bạn không nên dựa vào độ phân giải hiện tại.

Đồng thời, nếu muốn hưởng lợi từ độ phân giải cao hơn cho bộ hẹn giờ, chẳng hạn như để đo lường hiệu suất chính xác hơn, bạn cần đảm bảo trang web của mình được tách biệt giữa các nguồn gốc. Điều đó sẽ giúp bạn có được độ phân giải tốt hơn cả trong Chrome và các trình duyệt dựa trên Chromium khác, cũng như Firefox.

Bộ hẹn giờ có liên quan gì đến tính năng tách biệt nhiều nguồn gốc?

Các nhà cung cấp trình duyệt đã quyết định giới hạn bộ hẹn giờ ở độ phân giải thô hơn (cũng như khả năng sử dụng SharedArrayBuffers có thể dùng làm bộ hẹn giờ ngầm) khi phát hiện ra Spectre. Lý do là Spectre và các cuộc tấn công thực thi suy đoán tương tự dựa vào bộ hẹn giờ để đo lường thời gian thực hiện một số thao tác nhất định, sau đó đoán nội dung của bộ nhớ của quy trình.

Mặc dù các cuộc tấn công thực thi dự đoán có thể được thực thi bằng bộ hẹn giờ thô, nhưng bộ hẹn giờ có độ phân giải cao có thể tăng tốc các cuộc tấn công đó. Chrome đã sử dụng cấu trúc tách biệt trang web cũng như các cơ chế khác để giảm thiểu rủi ro và bật lại các chức năng đó, nhưng chỉ giới hạn ở các nền tảng máy tính và trình duyệt Chromium. Việc các API dựa vào cấu trúc trình duyệt cơ bản là không thực sự lý tưởng.

Tính năng tách biệt trên nhiều nguồn gốc cung cấp đường cơ sở tiêu chuẩn để trình duyệt chạy các trang trong một môi trường tách biệt, nhờ đó, trình duyệt không thể tải các tài nguyên không mong muốn trên nhiều nguồn gốc và do đó, không có nguy cơ bị Spectre tấn công. Với tính năng tách biệt nhiều nguồn gốc, giờ đây, chúng ta có thể cho phép các trang truy cập vào bộ hẹn giờ có độ phân giải cao, SharedArrayBuffer và các API khác không an toàn để hiển thị trong các quy trình có thể đọc dữ liệu tuỳ ý trên nhiều nguồn gốc.

Để tìm hiểu thêm về lý do dẫn đến thay đổi này, hãy đọc bài viết Lý do bạn cần "được tách biệt giữa các nguồn gốc" để có các tính năng mạnh mẽ.

Ảnh bìa của Linda Perez Johannessen trên Unsplash.