Tệp kê khai – Hộp cát

Xác định một tập hợp các trang tiện ích sẽ được phân phát trong một nguồn gốc riêng biệt có dạng hộp cát. Chính sách bảo mật nội dung mà các trang hộp cát của tiện ích sử dụng được chỉ định trong khoá "content_security_policy".

Việc ở trong hộp cát có hai tác động:

  1. Trang có hộp cát sẽ không có quyền truy cập vào API tiện ích hoặc quyền truy cập trực tiếp vào các trang không ở trong hộp cát (trang có thể giao tiếp với các trang đó bằng postMessage()).
  2. Trang có hộp cát không phải tuân thủ Chính sách bảo mật nội dung (CSP) mà phần còn lại của tiện ích sử dụng (trang có giá trị CSP riêng). Ví dụ: mã này có thể sử dụng tập lệnh cùng dòng và eval().

Ví dụ: dưới đây là cách chỉ định rằng hai trang tiện ích sẽ được phân phát trong một hộp cát có CSP tuỳ chỉnh:

{
  ...
  "content_security_policy": {
    "sandbox": "sandbox allow-scripts; script-src 'self' https://example.com"
  },
  "sandbox": {
    "pages": [
      "page1.html",
      "directory/page2.html"
    ]
  },
  ...
}

Nếu không được chỉ định, giá trị mặc định của "content_security_policy" sẽ là sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';.

Bạn có thể chỉ định giá trị CSP để hạn chế hộp cát hơn nữa, nhưng giá trị đó PHẢI bao gồm lệnh "sandbox" và KHÔNG ĐƯỢC có mã thông báo allow-same-origin (xem thông số kỹ thuật HTML5 để biết các mã thông báo hộp cát có thể có).

Lưu ý rằng bạn chỉ cần liệt kê các trang mà bạn muốn tải trong cửa sổ hoặc khung. Tài nguyên dùng bởi các trang hộp cát (ví dụ: biểu định kiểu hoặc tệp nguồn JavaScript) không cần xuất hiện trong danh sách pages vì các tài nguyên này sẽ sử dụng hộp cát của khung nhúng các tài nguyên đó.

Bài viết "Sử dụng eval() trong Tiện ích của Chrome" sẽ đi sâu hơn về cách triển khai quy trình tạo hộp cát cho phép sử dụng các thư viện gặp vấn đề khi thực thi theo Chính sách bảo mật nội dung mặc định của tiện ích.