Cơ sở dữ liệu cục bộ

Tài liệu này áp dụng cho phương thức sau: Cập nhật API (v4): threatListUpdates.fetch.

Thiết lập cơ sở dữ liệu

Ứng dụng phải sử dụng API Cập nhật để thiết lập cơ sở dữ liệu cục bộ và tải danh sách Duyệt web an toàn xuống ban đầu mà họ muốn xử lý. Để bắt đầu, bạn có thể tạo và triển khai gói safebrowsing Go (hoặc sử dụng gói này để lập mô hình phương thức triển khai của riêng bạn). Để biết thêm thông tin, hãy truy cập vào https://github.com/google/safebrowsing/.

Cập nhật cơ sở dữ liệu

Để đảm bảo khả năng bảo vệ trước những mối đe doạ mới nhất, khách hàng nên thường xuyên cập nhật danh sách Duyệt web an toàn cục bộ của họ bằng phương thức threatListUpdates.fetch. Yêu cầu threatListUpdate.fetch đã chỉ định danh sách cần cập nhật. Nếu có giới hạn về bộ nhớ hoặc băng thông, ứng dụng cũng có thể sử dụng yêu cầu để đặt các quy tắc ràng buộc đối với việc cập nhật (xem nội dung Cập nhật quy tắc ràng buộc). Phản hồi threatListUpdate.fetch sẽ trả về toàn bộ hoặc một phần cập nhật cho từng danh sách, như được giải thích bên dưới.

Bản cập nhật đầy đủ

Hệ thống sẽ trả về toàn bộ bản cập nhật khi ứng dụng rời khỏi trường state trong yêu cầu threatListUpdate.fetch dữ liệu bị trống hoặc khi máy chủ xác định rằng cần phải cập nhật toàn bộ. Đối với bản cập nhật đầy đủ, hệ thống chỉ trả về các lượt bổ sung. Ứng dụng dự kiến sẽ xoá cơ sở dữ liệu cục bộ trước khi áp dụng nội dung cập nhật và thực hiện kiểm tra xác thực.

Trạng thái trống

Toàn bộ nội dung cập nhật sẽ được trả về khi ứng dụng gửi yêu cầu ban đầu cho một danh sách. Trong trường hợp này, trường state trong yêu cầu sẽ bị để trống (vì không có giá trị để cung cấp) và trường newClientState trong phản hồi sẽ trả về trạng thái ban đầu cho danh sách cục bộ. Nội dung cập nhật đầy đủ cũng được trả về khi ứng dụng cố ý để trống trường state trong các yêu cầu tiếp theo. Thao tác này sẽ buộc cập nhật toàn bộ và trả về trạng thái mới trong trường newClientState của phản hồi.

Quyết định của máy chủ

Đôi khi, máy chủ Duyệt web an toàn trả về bản cập nhật đầy đủ khi ứng dụng chỉ yêu cầu cập nhật một phần. Điều này có thể xảy ra khi ứng dụng tải xuống một phiên bản nhỏ của danh sách, sau đó cập nhật lên phiên bản lớn hơn của danh sách; máy chủ sẽ chỉ trả về một bản cập nhật đầy đủ chứa toàn bộ danh sách. Điều này cũng có thể xảy ra nếu ứng dụng không tải dữ liệu xuống trong một thời gian dài và yêu cầu cập nhật một phần; xin nhắc lại, máy chủ sẽ chỉ trả về toàn bộ bản cập nhật với toàn bộ danh sách.

Nội dung cập nhật một phần

Cập nhật một phần sẽ được trả về khi ứng dụng cung cấp một giá trị cho trường state trong yêu cầu threatListUpdates.fetch (ngoại lệ như đã lưu ý ở trên là khi máy chủ xác định rằng cần phải cập nhật toàn bộ). Đối với các bản cập nhật một phần, cả các lượt thêmxoá đều được trả về. Máy khách sẽ cập nhật các danh sách trong cơ sở dữ liệu cục bộ (áp dụng các thao tác xoá trước khi bổ sung), sau đó kiểm tra xác thực.

Đồ nội thất đi kèm

Bổ sung là tiền tố băm SHA256 phải được thêm vào cơ sở dữ liệu cục bộ. Phần lớn các tiền tố băm đều dài 4 byte nhưng một số tiền tố băm có thể có độ dài từ 4 đến 32 byte. Do đó, nhiều tập hợp phần bổ sung có thể được trả về; ví dụ: một tập hợp chứa tiền tố 4 byte và một tập hợp chứa tiền tố 5 byte.

Nếu ứng dụng hỗ trợ tính năng nén, thì phản hồi có thể được nén bằng tính năng nén Gạo. Tuy nhiên, chỉ các tiền tố băm 4 byte mới được nén. Các tiền tố băm dài hơn luôn được gửi ở định dạng thô, không nén (xem nội dung Nén).

Xoá

Xoá là các chỉ mục cơ sở 0 trong cơ sở dữ liệu ứng dụng được sắp xếp theo từ vựng trỏ đến các mục cần xoá khỏi cơ sở dữ liệu cục bộ. Hệ thống sẽ chỉ trả về một nhóm yêu cầu xoá.

Nếu ứng dụng hỗ trợ tính năng nén, thì "răm gạo" và "chỉ mục gạo" sẽ được trả về. Nếu không hỗ trợ quá trình nén, "hàm băm thô" và "chỉ mục thô" sẽ được trả về (xem phần Nén).

Kiểm tra xác thực

Khi phản hồi threatListUpdated.fetch (tìm nạp dữ liệu) được trả về (với cập nhật toàn bộ hoặc cập nhật một phần), ứng dụng dự kiến sẽ thực hiện quá trình kiểm tra xác thực.

Trước tiên, ứng dụng sẽ cập nhật các danh sách trong cơ sở dữ liệu cục bộ (áp dụng xoá trước khi bổ sung). Sau đó, ứng dụng sẽ tính toán hàm băm SHA256 của danh sách cục bộ (được sắp xếp theo từ điển) và so sánh với giá trị tổng kiểm được trả về trong phản hồi. Nếu hai giá trị bằng nhau, danh sách Duyệt web an toàn được coi là "chính xác".

Nếu hai giá trị không bằng nhau, danh sách Duyệt web an toàn bị coi là "hỏng". Ứng dụng phải xoá danh sách khỏi cơ sở dữ liệu và phát hành lại bản cập nhật thứ hai với trường state được đặt thành chuỗi trống; thao tác này sẽ buộc cập nhật toàn bộ và trả về một danh sách và trạng thái hoàn toàn mới.