Integrity-Policy header
Tiêu đề phản hồi HTTP Integrity-Policy cho phép quản trị viên trang web đảm bảo rằng tất cả các tài nguyên mà user agent tải (thuộc loại nhất định) đều có các đảm bảo Subresource Integrity.
Khi được đặt, user agent sẽ chặn các yêu cầu trên các request destination được chỉ định bỏ qua metadata toàn vẹn, và cũng sẽ chặn các yêu cầu ở chế độ no-cors khỏi việc được thực hiện. Điều này giúp bảo vệ chống lại thao túng nội dung của các subresource được tải.
Các vi phạm của chính sách có thể được báo cáo bằng Reporting API.
Báo cáo có thể được quan sát trong trang mà chính sách đang được thực thi, bằng ReportingObserver, và được gửi đến các endpoint của máy chủ được định nghĩa trong tiêu đề phản hồi HTTP Reporting-Endpoints và được chọn bằng trường endpoints.
Để biết thêm thông tin xem IntegrityViolationReport.
| Loại tiêu đề | Response header |
|---|
Cú pháp
Integrity-Policy: blocked-destinations=(<destination>),sources=(<source>),endpoints=(<endpoint>)
Các giá trị tiêu đề được xác định là từ điển structured field với các khóa sau:
blocked-destinations-
Danh sách các request destination phải bao gồm metadata toàn vẹn hợp lệ. Các giá trị được phép là:
sourcesOptional-
Danh sách các nguồn toàn vẹn phải bao gồm metadata toàn vẹn. Các giá trị được phép là:
inline-
Nguồn metadata toàn vẹn là nội tuyến với nội dung, chẳng hạn như thuộc tính integrity. Đây là mặc định.
Vì đây là giá trị mặc định và duy nhất, bỏ qua
sourcestương đương với chỉ địnhsources=(inline).
endpointsOptional-
Danh sách các tên endpoint báo cáo chỉ ra nơi báo cáo sẽ được gửi. Các endpoint báo cáo phải được xác định trong tiêu đề
Reporting-Endpoints.
Ví dụ
>Chặn và báo cáo khi script thiếu metadata toàn vẹn
Ví dụ này hiển thị tài liệu chặn và báo cáo đến một endpoint máy chủ khi bất kỳ <script> nào (hoặc HTMLScriptElement) không chỉ định thuộc tính integrity, hoặc khi tài nguyên script được yêu cầu ở chế độ no-cors.
Lưu ý rằng integrity-endpoint được sử dụng trong Integrity-Policy được định nghĩa trong tiêu đề Reporting-Endpoints.
Reporting-Endpoints: integrity-endpoint="https://example.com/integrity", backup-integrity-endpoint="https://report-provider.example/integrity"
Integrity-Policy: blocked-destinations=(script), endpoints=(integrity-endpoint backup-integrity-endpoint)
Payload báo cáo có thể trông như thế này.
{
"type": "integrity-violation",
"url": "https://example.com",
"body": {
"documentURL": "https://example.com",
"blockedURL": "https://example.com/main.js",
"destination": "script",
"reportOnly": false
}
}
Thông số kỹ thuật
| Specification |
|---|
| Subresource Integrity> # integrity-policy-section> |