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

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

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

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

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});
  }
}