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

http
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à:

script

Tài nguyên script.

style

Tài nguyên stylesheet.

sources Optional

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 sources tương đương với chỉ định sources=(inline).

endpoints Optional

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.

http
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.

json
{
  "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

Khả năng tương thích trình duyệt

Xem thêm