Overview

Lưu ý: Tài liệu này hiện vẫn đang trong quá trình phát triển. Chúng tôi sẽ cải thiện trong thời gian sắp tới.

Phiên bản 5 của tính năng Duyệt web an toàn của Google là phiên bản cải tiến của phiên bản 4. Hai thay đổi chính được thực hiện trong phiên bản 5 là độ mới của dữ liệu và quyền riêng tư về địa chỉ IP. Ngoài ra, giao diện API đã được cải thiện để tăng tính linh hoạt, hiệu quả và giảm tình trạng đầy bộ nhớ. Hơn nữa, Google Duyệt web an toàn phiên bản 5 được thiết kế để giúp bạn dễ dàng chuyển từ phiên bản 4.

Hiện tại, Google cung cấp cả phiên bản 4 và 5 và cả hai đều được coi là đã sẵn sàng cho hoạt động sản xuất. Bạn có thể sử dụng phiên bản 4 hoặc 5. Chúng tôi chưa công bố ngày ngừng cung cấp phiên bản 4. Nếu có, chúng tôi sẽ thông báo trước ít nhất một năm. Trang này sẽ mô tả phiên bản 5 cũng như hướng dẫn di chuyển từ phiên bản 4 sang phiên bản 5; tài liệu đầy đủ về phiên bản 4 vẫn có sẵn.

Làm mới dữ liệu

Trong phiên bản 5, chúng tôi giới thiệu một chế độ hoạt động có tên là bảo vệ theo thời gian thực. Điều này giúp giải quyết vấn đề dữ liệu cũ ở trên. Trong phiên bản 4, ứng dụng sẽ tải xuống và duy trì cơ sở dữ liệu cục bộ, kiểm tra danh sách mối đe doạ đã tải xuống cục bộ, sau đó khi có một phần tiền tố khớp, hãy thực hiện yêu cầu tải hàm băm đầy đủ xuống. Trong phiên bản 5, mặc dù ứng dụng phải tiếp tục tải xuống và duy trì cơ sở dữ liệu cục bộ về danh sách mối đe doạ, nhưng giờ đây, ứng dụng cũng phải tải danh sách các trang web có khả năng vô hại (được gọi là Bộ nhớ đệm toàn cầu), thực hiện cả việc kiểm tra cục bộ cho Bộ nhớ đệm toàn cầu này cũng như kiểm tra danh sách mối đe doạ cục bộ, và cuối cùng, khi có một phần tiền tố khớp với danh sách mối đe doạ hoặc không khớp trong Bộ nhớ đệm toàn cầu, hãy thực hiện yêu cầu tải toàn bộ hàm băm xuống. (Để biết thông tin chi tiết về quy trình xử lý cục bộ mà ứng dụng yêu cầu, vui lòng xem quy trình được cung cấp bên dưới.) Đây là sự thay đổi từ chế độ cho phép theo mặc định sang chế độ kiểm tra theo mặc định. Điều này có thể cải thiện khả năng bảo vệ trước sự lây lan nhanh hơn của các mối đe doạ trên web. Nói cách khác, đây là giao thức được thiết kế để cung cấp khả năng bảo vệ gần như theo thời gian thực: chúng tôi muốn khách hàng được hưởng lợi từ dữ liệu mới hơn của Google Duyệt web an toàn.

Quyền riêng tư về địa chỉ IP

Tính năng Duyệt web an toàn của Google (phiên bản 4 hoặc 5) không xử lý bất kỳ nội dung nào liên quan đến danh tính của người dùng trong quá trình phân phát yêu cầu. Cookie (nếu được gửi) sẽ bị bỏ qua. Google biết địa chỉ IP gốc của các yêu cầu, nhưng Google chỉ sử dụng địa chỉ IP cho các nhu cầu kết nối mạng thiết yếu (tức là để gửi phản hồi) và cho mục đích chống tấn công từ chối dịch vụ (DoS).

Đồng thời với phiên bản 5, chúng tôi giới thiệu một API đồng hành có tên là API Cổng HTTP không nhận biết của tính năng Duyệt web an toàn. Phương thức này sử dụng Oblivious HTTP để ẩn địa chỉ IP của người dùng cuối khỏi Google. Cơ chế này hoạt động bằng cách yêu cầu một bên thứ ba không cấu kết xử lý phiên bản đã mã hoá của yêu cầu của người dùng, sau đó chuyển tiếp yêu cầu đó đến Google. Do đó, bên thứ ba chỉ có quyền truy cập vào địa chỉ IP và Google chỉ có quyền truy cập vào nội dung của yêu cầu. Bên thứ ba vận hành một Cầu nối HTTP ẩn (chẳng hạn như dịch vụ này của Fastly) và Google vận hành Cổng HTTP ẩn. Đây là một API đồng hành không bắt buộc. Khi bạn sử dụng tính năng này cùng với tính năng Duyệt web an toàn của Google, địa chỉ IP của người dùng cuối sẽ không còn được gửi đến Google.

Chế độ hoạt động

Tính năng Duyệt web an toàn của Google phiên bản 5 cho phép ứng dụng khách chọn trong số 3 chế độ hoạt động.

Chế độ theo thời gian thực

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

Ngoài cơ sở dữ liệu cục bộ, ứng dụng sẽ duy trì 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ớ ổn định và có thể được xoá trong trường hợp áp lực 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.

Chế độ danh sách cục bộ

Khi ứng dụng chọn sử dụng Google Safe Browsing phiên bản 5 ở chế độ này, hành vi của ứng dụng sẽ tương tự như API Cập nhật phiên bản 4, ngoại trừ việc sử dụng giao diện API cải tiến của phiên bản 5. Ứng dụng sẽ duy trì trong cơ sở dữ liệu cục bộ của mình 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ủ lưu trữ/tiền tố đường dẫn. Bất cứ khi nào ứng dụng muốn kiểm tra một URL cụ thể, hệ thống sẽ kiểm tra bằng danh sách mối đe doạ cục bộ. Chỉ khi có kết quả trùng khớp, ứng dụng mới kết nối với máy chủ để tiếp tục kiểm tra.

Tương tự như trên, ứng dụng cũng sẽ duy trì bộ nhớ đệm cục bộ không cần phải ở bộ nhớ cố định.

Chế độ theo thời gian thực không cần bộ nhớ

Khi khách hàng chọn sử dụng Google Duyệt web an toàn phiên bản 5 ở chế độ không lưu trữ theo thời gian thực, khách hàng không cần duy trì bất kỳ cơ sở dữ liệu cục bộ nào liên tục. Tuy nhiên, ứng dụng vẫn được dự kiến sẽ duy trì 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ớ ổn định và có thể được xoá trong trường hợp áp lực bộ nhớ.

Bất cứ khi nào ứng dụng khách muốn kiểm tra một URL cụ thể, ứng dụng khách luôn kết nối với máy chủ để thực hiện việc kiểm tra. Chế độ này tương tự như những gì mà ứng dụng của API tra cứu phiên bản 4 có thể triển khai.

So với Chế độ theo thời gian thực, chế độ này có thể sử dụng nhiều băng thông mạng hơn nhưng có thể phù hợp hơn nếu ứng dụng không thuận tiện để duy trì trạng thái cục bộ ổn định.

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

Quy trình này được dùng khi ứng dụng chọn chế độ hoạt động theo thời gian thực.

Quy trình này lấy một URL u và trả về SAFE, UNSAFE hoặc UNSURE. Nếu hàm này trả về SAFE, thì URL sẽ được tính năng Duyệt web an toàn của Google coi là an toàn. Nếu hàm này trả về UNSAFE, thì URL đó được tính năng Duyệt web an toàn của Google coi là có thể không an toàn và bạn cần phải thực hiện hành động thích hợp: chẳng hạn như hiển thị cảnh báo cho người dùng cuối, di chuyển thư đã nhận 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 hàm này trả về UNSURE, bạn nên sử dụng quy trình kiểm tra cục bộ sau.

  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 của expressionHashes:
    1. Nếu tìm thấy hash trong bộ nhớ đệm toàn cục, 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 của expressionHashPrefixes:
    1. Tìm expressionHashPrefix trong bộ nhớ đệm cục bộ.
    2. Nếu tìm thấy mục đã lưu vào 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 đã tìm thấy trong bộ nhớ đệm 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 cụ thể này khỏi expressionHashPrefixes.
        2. Kiểm tra xem có tìm thấy hàm băm đầy đủ tương ứng trong expressionHashes trong mục nhập đã 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 đã lưu vào bộ nhớ đệm, hãy tiếp tục vòng lặp.
  6. Gửi expressionHashPrefixes đến máy chủ Google Duyệt web an toàn phiên bản 5 bằng SearchHashes RPC hoặc phương thức REST hashes.search. Nếu xảy ra lỗi (bao gồm 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ụ 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 của 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 của response:
    1. Giả sử isFound là kết quả tìm thấy 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ả về 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 expressionHashPrefixes đó. Ví dụ: ứng dụng có thể gửi tất cả expressionHashPrefixes trong một yêu cầu và cũng có thể gửi từng tiền tố riêng lẻ trong expressionHashPrefixes đến máy chủ theo các yêu cầu riêng biệt (có thể tiến hành song song). Ứng dụng cũng có thể gửi tiền tố băm không liên quan hoặc được tạo ngẫu nhiên cùng với 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 không vượt quá 30.

Quy trình kiểm tra URL trong Danh sách LocalThreat

Quy trình này được dùng khi ứng dụng chọn chế độ hoạt động danh sách cục bộ. Phương thức này cũng được dùng khi ứng dụng thực thi quy trình RealTimeCheck ở trên trả về giá trị của UNSURE.

Quy trình này lấy một URL u và trả về SAFE hoặc UNSAFE.

  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. 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.
  4. Đối với mỗi expressionHashPrefix của expressionHashPrefixes:
    1. Tìm expressionHashPrefix trong bộ nhớ đệm cục bộ.
    2. Nếu tìm thấy mục đã lưu vào 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 đã tìm thấy trong bộ nhớ đệm 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 cụ thể này khỏi expressionHashPrefixes.
        2. Kiểm tra xem có tìm thấy hàm băm đầy đủ tương ứng trong expressionHashes trong mục nhập đã 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 đã lưu vào bộ nhớ đệm, hãy tiếp tục vòng lặp.
  5. Đối với mỗi expressionHashPrefix của expressionHashPrefixes:
    1. Tìm expressionHashPrefix trong cơ sở dữ liệu danh sách mối đe doạ cục bộ.
    2. Nếu không tìm thấy expressionHashPrefix trong cơ sở dữ liệu danh sách mối đe doạ cục bộ, hãy xoá expressionHashPrefix khỏi expressionHashPrefixes.
  6. Gửi expressionHashPrefixes đến máy chủ Google Duyệt web an toàn phiên bản 5 bằng SearchHashes RPC hoặc phương thức REST hashes.search. Nếu xảy ra lỗi (bao gồm lỗi mạng, lỗi HTTP, v.v.), hãy trả về SAFE. 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ụ 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 của 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 của response:
    1. Giả sử isFound là kết quả tìm thấy 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ả về SAFE.

Quy trình kiểm tra URL theo thời gian thực mà không cần cơ sở dữ liệu cục bộ

Quy trình này được dùng khi ứng dụng khách chọn chế độ hoạt động không lưu trữ theo thời gian thực.

Quy trình này lấy một URL u và trả về SAFE hoặc UNSAFE.

  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. 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.
  4. Đối với mỗi expressionHashPrefix của expressionHashPrefixes:
    1. Tìm expressionHashPrefix trong bộ nhớ đệm cục bộ.
    2. Nếu tìm thấy mục đã lưu vào 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 đã tìm thấy trong bộ nhớ đệm 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 cụ thể này khỏi expressionHashPrefixes.
        2. Kiểm tra xem có tìm thấy hàm băm đầy đủ tương ứng trong expressionHashes trong mục nhập đã 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 đã lưu vào bộ nhớ đệm, hãy tiếp tục vòng lặp.
  5. Gửi expressionHashPrefixes đến máy chủ Google Duyệt web an toàn phiên bản 5 bằng SearchHashes RPC hoặc phương thức REST hashes.search. Nếu xảy ra lỗi (bao gồm lỗi mạng, lỗi HTTP, v.v.), hãy trả về SAFE. 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ụ 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.
  6. Đối với mỗi fullHash của response:
    1. Chèn fullHash vào bộ nhớ đệm cục bộ cùng với expiration.
  7. Đối với mỗi fullHash của response:
    1. Giả sử isFound là kết quả tìm thấy 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.
  8. Trả về SAFE.

Giống như Quy trình kiểm tra URL theo thời gian thực, quy trình này không chỉ định chính xác cách gửi tiền tố hàm băm đến máy chủ. Ví dụ: ứng dụng có thể gửi tất cả expressionHashPrefixes trong một yêu cầu và cũng có thể gửi từng tiền tố riêng lẻ trong expressionHashPrefixes đến máy chủ theo các yêu cầu riêng biệt (có thể tiến hành song song). Ứng dụ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 không vượt quá 30.

Yêu cầu mẫu

Phần này trình bày một số ví dụ về cách sử dụng trực tiếp API HTTP để truy cập vào Dịch vụ duyệt web an toàn của Google. Bạn nên sử dụng liên kết ngôn ngữ được tạo vì liên kết này sẽ tự động xử lý việc mã hoá và giải mã theo cách thuận tiện. Vui lòng tham khảo tài liệu về liên kết đó.

Dưới đây là ví dụ về yêu cầu HTTP sử dụng phương thức hashes.search:

GET https://safebrowsing.googleapis.com/v5/hashes:search?key=INSERT_YOUR_API_KEY_HERE&hashPrefixes=WwuJdQ

Phần nội dung phản hồi là một tải trọng được định dạng vùng đệm giao thức mà sau đó bạn có thể giải mã.

Sau đây là ví dụ về yêu cầu HTTP sử dụng phương thức hashLists.batchGet:

GET https://safebrowsing.googleapis.com/v5alpha1/hashLists:batchGet?key=INSERT_YOUR_API_KEY_HERE&names=se&names=mw-4b

Một lần nữa, phần nội dung phản hồi là một tải trọng được định dạng vùng đệm giao thức mà sau đó bạn có thể giải mã.