ปกป้องความเป็นส่วนตัวของผู้ใช้

ผู้ใช้จะไม่ติดตั้งส่วนขยายหากส่วนขยายนั้นละเมิดความเป็นส่วนตัวหรือขอสิทธิ์มากกว่าที่จำเป็น คำขอสิทธิ์ควรฟังดูสมเหตุสมผลสำหรับผู้ใช้และจำกัดไว้สำหรับข้อมูลสำคัญที่จำเป็นต่อการติดตั้งใช้งานส่วนขยาย ส่วนขยายที่รวบรวมหรือส่งข้อมูลผู้ใช้ต้องเป็นไปตามนโยบายในส่วนการปกป้องความเป็นส่วนตัวของผู้ใช้

ปกป้องและเคารพผู้ใช้ส่วนขยายโดยใช้ข้อควรระวังเหล่านี้เพื่อรักษาข้อมูลประจำตัวของผู้ใช้ให้ปลอดภัย

ลดสิทธิ์ที่จำเป็น

API ที่ส่วนขยายเข้าถึงได้จะระบุไว้ในpermissionsของไฟล์ Manifest ยิ่งให้สิทธิ์มากเท่าใด ผู้โจมตีก็ยิ่งมีช่องทางในการดักข้อมูลมากขึ้นเท่านั้น ควรแสดงเฉพาะ API ที่ส่วนขยายใช้ และควรพิจารณาตัวเลือกที่รุกล้ำน้อยกว่า ยิ่งส่วนขยายขอสิทธิ์น้อยเท่าใด คำเตือนเกี่ยวกับสิทธิ์ก็จะแสดงต่อผู้ใช้น้อยลงเท่านั้น ผู้ใช้มีแนวโน้มที่จะติดตั้งส่วนขยายที่มีคำเตือนจำกัดมากกว่า

ส่วนขยายไม่ควร "เตรียมพร้อมสำหรับอนาคต" ในการเข้าถึงข้อมูลผู้ใช้ด้วยการขอสิทธิ์ที่ปัจจุบันไม่จำเป็น แต่จะนำไปใช้ในอนาคต รวมสิทธิ์ใหม่ไว้ในการอัปเดตส่วนขยาย และพิจารณาทำให้สิทธิ์เหล่านั้นไม่บังคับ

activeTab

ส่วนขยายที่ใช้สิทธิ์ของโฮสต์เพื่อแทรกสคริปต์มักจะใช้ activeTab แทนได้ activeTabสิทธิ์จะให้สิทธิ์เข้าถึงแท็บที่ใช้งานอยู่ในปัจจุบันแก่ส่วนขยายเป็นการชั่วคราวเฉพาะเมื่อผู้ใช้เรียกใช้ส่วนขยายเท่านั้น ระบบจะตัดสิทธิ์การเข้าถึงเมื่อผู้ใช้ออกจากแท็บปัจจุบันหรือปิดแท็บ โดยเป็นทางเลือกสำหรับการใช้งาน <all_urls> หลายอย่าง

{
  "name": "Very Secure Extension",
  "version": "1.0",
  "description": "Example of a Secure Extension",
  "permissions": ["activeTab"],
  "manifest_version": 3
}

สิทธิ์ activeTab จะไม่แสดงข้อความเตือนระหว่างการติดตั้ง

เลือกใช้สิทธิ์ที่ไม่บังคับ

ช่วยให้ผู้ใช้เลือกได้ว่าจะต้องการฟีเจอร์และสิทธิ์ใดจากส่วนขยายโดยการระบุสิทธิ์ที่ไม่บังคับ หากฟีเจอร์ไม่จำเป็นต่อฟังก์ชันหลักของส่วนขยาย ให้ทําให้เป็นฟีเจอร์ที่ไม่บังคับ แล้วย้าย API หรือโดเมนไปยังช่อง optional_permissions

{
  "name": "Very Secure Extension",
  ...
  "optional_permissions": [ "tabs", ],
  "optional_host_permissions": ["https://www.google.com/" ],
  ...
}

การรวมสิทธิ์ที่ไม่บังคับจะช่วยให้ส่วนขยายอธิบายได้ว่าทำไมจึงต้องมีสิทธิ์เฉพาะ เมื่อผู้ใช้เปิดใช้ฟีเจอร์ที่เกี่ยวข้อง ส่วนขยายสามารถเสนอตัวเลือกให้ผู้ใช้เปิดใช้ ฟีเจอร์ได้

ภาพหน้าจอของป๊อปอัปที่ขอให้เปิดใช้สิทธิ์

การคลิกตกลงจะทริกเกอร์เหตุการณ์ต่อไปนี้ใน Service Worker

chrome.action.onClicked.addListener((event) => {
  // Permissions must be requested from inside a user gesture, like a button's
  // click handler.
  chrome.permissions.request(
    {
      permissions: ["tabs", "scripting"],
      origins: ['https://www.google.com/']
    },
    function (granted) {
      // The callback argument will be true if the user granted the permissions.
      if (granted) {
        // doSomething();
      } else {
        // doSomethingElse();
      }
    }
  );
});

จากนั้นระบบจะแจ้งให้ผู้ใช้ส่งคำขอต่อไปนี้

ภาพหน้าจอของคำขอสิทธิ์ที่ไม่บังคับ

นอกจากนี้ คุณยังใช้สิทธิ์ที่ไม่บังคับในการอัปเดตส่วนขยายได้ด้วย การดำเนินการนี้จะทำให้ฟีเจอร์ใหม่พร้อมใช้งานสำหรับผู้ใช้โดยไม่ต้องปิดใช้ส่วนขยาย ซึ่งอาจเกิดขึ้นได้หากอัปเดตด้วยสิทธิ์ใหม่ที่จำเป็น

จำกัดและรักษาความปลอดภัยของข้อมูลผู้ใช้

ขอเฉพาะปริมาณข้อมูลขั้นต่ำที่ส่วนขยายต้องการ ยิ่งส่วนขยายขอข้อมูลจากผู้ใช้น้อยเท่าใด ก็ยิ่งมีความเสี่ยงน้อยลงหากส่วนขยายถูกบุกรุก

คุณควรดูแลข้อมูลผู้ใช้ที่ขอทั้งหมดอย่างระมัดระวัง จัดเก็บและเรียกข้อมูลในเซิร์ฟเวอร์ที่ปลอดภัยซึ่งมีโดเมนที่ลงทะเบียน ใช้ HTTPS เสมอเพื่อเชื่อมต่อและหลีกเลี่ยงการเก็บข้อมูลผู้ใช้ที่ละเอียดอ่อนไว้ในฝั่งไคลเอ็นต์ของส่วนขยาย เนื่องจากที่เก็บข้อมูลของส่วนขยายไม่ได้เข้ารหัส

การบันทึกข้อมูลและโหมดไม่ระบุตัวตน

ส่วนขยายสามารถบันทึกข้อมูลได้โดยใช้ storage API หรือโดยการส่งคำขอไปยังเซิร์ฟเวอร์ซึ่ง ส่งผลให้มีการบันทึกข้อมูล เมื่อส่วนขยายต้องบันทึกสิ่งใดก็ตาม ให้พิจารณาก่อนว่ามาจาก หน้าต่างโหมดไม่ระบุตัวตนหรือไม่ โดยค่าเริ่มต้น ส่วนขยายจะไม่ทำงานในหน้าต่างที่ไม่ระบุตัวตน

โหมดไม่ระบุตัวตนรับประกันว่าหน้าต่างจะไม่ทิ้งร่องรอยใดๆ ไว้ เมื่อจัดการข้อมูลจากหน้าต่างโหมดไม่ระบุตัวตน ส่วนขยายควรปฏิบัติตามสัญญาข้อนี้ หากปกติแล้วส่วนขยายจะบันทึกประวัติการท่องเว็บ ให้งดบันทึกประวัติจากหน้าต่างที่ไม่ระบุตัวตน อย่างไรก็ตาม ส่วนขยายสามารถจัดเก็บค่ากำหนดการตั้งค่าจากหน้าต่างใดก็ได้ ไม่ว่าจะเป็นหน้าต่างที่ไม่ระบุตัวตนหรือไม่ก็ตาม

หากต้องการตรวจหาว่าหน้าต่างอยู่ในโหมดไม่ระบุตัวตนหรือไม่ ให้ตรวจสอบพร็อพเพอร์ตี้ incognito ของออบเจ็กต์ tabs.Tab หรือ windows.Window ที่เกี่ยวข้อง

function saveTabData(tab) {
  if (tab.incognito) {
    return;
  } else {
    chrome.storage.local.set({data: tab.url});
  }
}