Real Time Mode

Khi chọn sử dụng tính năng Duyệt web an toàn của Google phiên bản 5 ở chế độ thời gian thực, các ứng dụng sẽ duy trì trong cơ sở dữ liệu cục bộ của mình: (i) Bộ nhớ đệm toàn cầu gồm các trang web có khả năng an toàn, được định dạng dưới dạng hàm băm SHA256 của biểu thức URL hậu tố máy chủ/tiền tố đường dẫn, (ii) một tập hợp danh sách mối đe doạ, được định dạng dưới dạng tiền tố hàm băm SHA256 của biểu thức URL hậu tố máy chủ/tiền tố đường dẫn. Ý tưởng chung là bất cứ khi nào máy khách muốn kiểm tra một URL cụ thể, một quy trình kiểm tra cục bộ sẽ được thực hiện bằng cách sử dụng Bộ nhớ đệm toàn cầu. Nếu quy trình kiểm tra đó thành công, thì một quy trình kiểm tra danh sách mối đe doạ cục bộ sẽ được thực hiện. Nếu không, ứng dụng sẽ tiếp tục kiểm tra băm theo thời gian thực như mô tả chi tiết bên dưới.

Ngoài cơ sở dữ liệu cục bộ, ứng dụng sẽ duy trì một bộ nhớ đệm cục bộ. Bộ nhớ đệm cục bộ như vậy không cần phải nằm trong bộ nhớ liên tục và có thể bị xoá trong trường hợp áp lực về bộ nhớ.

Bạn có thể xem thông số kỹ thuật chi tiết của quy trình này ở bên dưới.

Quy trình kiểm tra URL theo thời gian thực

Quy trình này lấy một URL duy nhất u và trả về SAFE, UNSAFE hoặc UNSURE. Nếu trả về SAFE, thì URL đó được dịch vụ Duyệt web an toàn của Google coi là an toàn. Nếu trả về UNSAFE, tức là tính năng Duyệt web an toàn của Google cho rằng URL đó có thể không an toàn và bạn nên thực hiện hành động thích hợp: chẳng hạn như cho người dùng cuối thấy cảnh báo, chuyển thư nhận được vào thư mục thư rác hoặc yêu cầu người dùng xác nhận thêm trước khi tiếp tục. Nếu phương thức này trả về UNSURE, thì sau đó bạn nên sử dụng quy trình kiểm tra cục bộ sau đây.

  1. Giả sử expressions là danh sách các biểu thức hậu tố/tiền tố do URL u tạo ra.
  2. Giả sử expressionHashes là một danh sách, trong đó các phần tử là hàm băm SHA256 của từng biểu thức trong expressions.
  3. Đối với mỗi hash trong số expressionHashes:
    1. Nếu tìm thấy hash trong bộ nhớ đệm chung, hãy trả về UNSURE.
  4. Giả sử expressionHashPrefixes là một danh sách, trong đó các phần tử là 4 byte đầu tiên của mỗi hàm băm trong expressionHashes.
  5. Đối với mỗi expressionHashPrefix trong số expressionHashPrefixes:
    1. Tìm expressionHashPrefix trong bộ nhớ đệm cục bộ.
    2. Nếu tìm thấy mục trong bộ nhớ đệm:
      1. Xác định xem thời gian hiện tại có lớn hơn thời gian hết hạn hay không.
      2. Nếu lớn hơn:
        1. Xoá mục được lưu vào bộ nhớ đệm đã tìm thấy khỏi bộ nhớ đệm cục bộ.
        2. Tiếp tục vòng lặp.
      3. Nếu không lớn hơn:
        1. Xoá expressionHashPrefix này khỏi expressionHashPrefixes.
        2. Kiểm tra xem hàm băm đầy đủ tương ứng trong expressionHashes có nằm trong mục nhập được lưu vào bộ nhớ đệm hay không.
        3. Nếu tìm thấy, hãy trả về UNSAFE.
        4. Nếu không tìm thấy, hãy tiếp tục vòng lặp.
    3. Nếu không tìm thấy mục trong bộ nhớ đệm, hãy tiếp tục vòng lặp.
  6. Gửi expressionHashPrefixes đến máy chủ Duyệt web an toàn của Google phiên bản 5 bằng cách sử dụng RPC SearchHashes hoặc phương thức REST hashes.search. Nếu xảy ra lỗi (bao gồm cả lỗi mạng, lỗi HTTP, v.v.), hãy trả về UNSURE. Nếu không, hãy để phản hồi là response nhận được từ máy chủ SB. Đây là danh sách các hàm băm đầy đủ cùng với một số thông tin phụ trợ xác định bản chất của mối đe doạ (kỹ thuật xã hội, phần mềm độc hại, v.v.), cũng như thời gian hết hạn của bộ nhớ đệm expiration.
  7. Đối với mỗi fullHash trong số response:
    1. Chèn fullHash vào bộ nhớ đệm cục bộ, cùng với expiration.
  8. Đối với mỗi fullHash trong số response:
    1. Giả sử isFound là kết quả của việc tìm fullHash trong expressionHashes.
    2. Nếu isFound là False, hãy tiếp tục vòng lặp.
    3. Nếu isFound là True, hãy trả về UNSAFE.
  9. Trả lại SAFE.

Mặc dù giao thức này chỉ định thời điểm ứng dụng gửi expressionHashPrefixes đến máy chủ, nhưng giao thức này cố ý không chỉ định chính xác cách gửi các chỉ số đó. Ví dụ: máy khách có thể gửi tất cả expressionHashPrefixes trong một yêu cầu duy nhất, đồng thời máy khách cũng có thể gửi từng tiền tố riêng lẻ trong expressionHashPrefixes đến máy chủ trong các yêu cầu riêng biệt (có thể tiến hành song song). Khách hàng cũng có thể gửi các tiền tố băm không liên quan hoặc được tạo ngẫu nhiên cùng với các tiền tố băm trong expressionHashPrefixes, miễn là số lượng tiền tố băm được gửi trong một yêu cầu duy nhất không vượt quá 30.