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.
- Giả sử
expressionslà danh sách các biểu thức hậu tố/tiền tố do URLutạo ra. - Giả sử
expressionHasheslà 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 trongexpressions. - Đối với mỗi
hashtrong sốexpressionHashes:- Nếu tìm thấy
hashtrong bộ nhớ đệm chung, hãy trả vềUNSURE.
- Nếu tìm thấy
- Giả sử
expressionHashPrefixeslà 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 trongexpressionHashes. - Đối với mỗi
expressionHashPrefixtrong sốexpressionHashPrefixes:- Tìm
expressionHashPrefixtrong bộ nhớ đệm cục bộ. - Nếu tìm thấy mục trong bộ nhớ đệm:
- 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.
- Nếu lớn hơn:
- Xoá mục được lưu vào bộ nhớ đệm đã tìm thấy khỏi bộ nhớ đệm cục bộ.
- Tiếp tục vòng lặp.
- Nếu không lớn hơn:
- Xoá
expressionHashPrefixnày khỏiexpressionHashPrefixes. - Kiểm tra xem hàm băm đầy đủ tương ứng trong
expressionHashescó nằm trong mục nhập được lưu vào bộ nhớ đệm hay không. - Nếu tìm thấy, hãy trả về
UNSAFE. - Nếu không tìm thấy, hãy tiếp tục vòng lặp.
- Xoá
- Nếu không tìm thấy mục trong bộ nhớ đệm, hãy tiếp tục vòng lặp.
- Tìm
- 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àresponsenhậ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ớ đệmexpiration. - Đối với mỗi
fullHashtrong sốresponse:- Chèn
fullHashvào bộ nhớ đệm cục bộ, cùng vớiexpiration.
- Chèn
- Đối với mỗi
fullHashtrong sốresponse:- Giả sử
isFoundlà kết quả của việc tìmfullHashtrongexpressionHashes. - Nếu
isFoundlà False, hãy tiếp tục vòng lặp. - Nếu
isFoundlà True, hãy trả vềUNSAFE.
- Giả sử
- 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.