Tệp kê khai – Tài nguyên có thể truy cập trên web

Một mảng chuỗi chỉ định đường dẫn của tài nguyên đóng gói dự kiến sẽ sử dụng được trong ngữ cảnh của trang web. Các đường dẫn này tương ứng với thư mục gốc của gói và có thể chứa ký tự đại diện. Ví dụ: một tiện ích chèn một tập lệnh nội dung với ý định xây dựng một số giao diện tuỳ chỉnh cho example.com sẽ cho phép mọi tài nguyên mà giao diện đó yêu cầu (hình ảnh, biểu tượng, biểu định kiểu, tập lệnh, v.v.) như sau:

{
  ...
  "web_accessible_resources": [
    "images/*.png",
    "style/double-rainbow.css",
    "script/double-rainbow.js",
    "script/main.js",
    "templates/*"
  ],
  ...
}

Sau đó, các tài nguyên này sẽ có trên trang web thông qua URL chrome-extension://[PACKAGE ID]/[PATH]. Bạn có thể tạo URL này bằng phương thức extension.getURL. Các tài nguyên trong danh sách cho phép được phân phát với các tiêu đề CORS thích hợp để các tài nguyên đó có sẵn thông qua các cơ chế như XHR.

Hoạt động điều hướng từ nguồn gốc web đến tài nguyên tiện ích sẽ bị chặn trừ phi tài nguyên đó được liệt kê là có thể truy cập trên web. Hãy lưu ý các trường hợp góc sau:

  • Khi một tiện ích dùng API webRequest hoặc declarativeWebRequest để chuyển hướng yêu cầu tài nguyên công khai đến một tài nguyên không thể truy cập trên web, thì yêu cầu đó cũng sẽ bị chặn.
  • Các điều trên vẫn đúng ngay cả khi tài nguyên không truy cập được trên web thuộc sở hữu của tiện ích chuyển hướng.

Tập lệnh nội dung không cần phải nằm trong danh sách cho phép.

Trước phiên bản tệp kê khai 2, bạn có thể truy cập vào tất cả tài nguyên trong một tiện ích qua bất kỳ trang nào trên web. Điều này cho phép trang web độc hại tạo vân tay số cho các tiện ích mà người dùng đã cài đặt hoặc khai thác các lỗ hổng bảo mật (ví dụ: lỗi XSS) trong các tiện ích đã cài đặt. Việc giới hạn khả năng sử dụng chỉ cho các tài nguyên rõ ràng là cho phép truy cập trên web sẽ giúp giảm thiểu bề mặt tấn công có sẵn và bảo vệ quyền riêng tư của người dùng.

Tình trạng phòng mặc định

Tài nguyên bên trong các gói sử dụng manifest_version 2 trở lên đều bị chặn theo mặc định và phải được đưa vào danh sách cho phép để sử dụng thông qua thuộc tính này.

Theo mặc định, các tài nguyên bên trong các gói sử dụng manifest_version 1 được cung cấp sẵn. Tuy nhiên, if bạn đặt thuộc tính này, thuộc tính này sẽ được coi là một danh sách đầy đủ gồm mọi tài nguyên có trong danh sách cho phép. Các tài nguyên không có trong danh sách sẽ bị chặn.