Tham chiếu · Tin cậy và xác minh
Xác minh phản hồi
Ed25519, nhãn thông điệp, và vì sao MAC không đủ.
Cách backend của bạn phân biệt câu trả lời của chúng tôi với câu trả lời do chính người truy cập tự viết.
Vì sao cần chữ ký bất đối xứng#
Phán quyết đi qua trình duyệt của người truy cập trước khi tới backend của bạn. Người đó sửa được nó.
Một MAC không đủ, và lý do rất đơn giản: chỉ người có thể giả mạo một MAC mới kiểm tra được nó. Nếu backend của bạn giữ khoá kiểm tra, thì khoá đó cũng ký được, và một khoá bị lộ ở phía khách hàng là một khoá tạo được phán quyết giả.
Ed25519 giải quyết điều đó: chúng tôi giữ khoá riêng, bạn kiểm tra bằng khoá công khai.
Dòng đầu là một nhãn#
Thông điệp được ký bắt đầu bằng một nhãn xác định loại thông điệp:
| Nhãn | Thuộc về |
|---|---|
hideguard-collect-ed25519-v2 | Phản hồi của /api/v1/collect |
hideguard-verdict-ed25519-v2 | Phản hồi của /api/v1/verdict-public |
hideguard-behavior-ack-ed25519-v2 | Xác nhận của /api/v1/behavior |
Nhãn là để phân tách miền, và cả cơ chế dựa vào nó. Phản hồi của verdict-public có danh sách trường giống hệt một phản hồi collect. Nếu dùng chung nhãn, một người truy cập đang giữ sẵn các phản hồi collect của chính mình có thể đưa ra một cái cũ hơn, sạch hơn vào đúng chỗ đang chờ câu trả lời hiện tại.
Những gì được ký#
Một danh sách trường chuẩn hoá, không phải byte của body. Trang có thể tuần tự hoá lại phản hồi, nên ký byte sẽ hỏng ngay.
Danh sách gồm: environment, requestId, reasonCodes (theo đúng thứ tự phục vụ, nên không xáo được), score, siteId, verdict, visitorId.
Một trường được thêm vào JSON không vì thế mà nằm trong chữ ký. Nếu bạn dựa vào một trường, hãy kiểm tra nó có trong danh sách trên không.
siteId và environment nằm trong đó, và đó là lý do cả hai có mặt trong phản hồi, vì khoá ký là của từng workspace.
Không có khoá thì không có trường chữ ký#
Nếu máy chủ không có khoá ký, hoặc một trường không nằm trong bộ ký tự cho phép, phản hồi không có trường signature nào cả, không phải một trường trông như đã ký.
Dung sai thời gian#
Chữ ký mang dấu thời gian. Mặc định chấp nhận phản hồi trong vòng 300 giây, cho phép đồng hồ lệch 30 giây.