Lindungi privasi pengguna

Pengguna tidak akan menginstal ekstensi jika mengganggu privasi mereka atau meminta izin lainnya yang tampaknya diperlukan. Permintaan izin harus dapat dipahami oleh pengguna dan terbatas pada informasi penting yang diperlukan untuk menerapkan ekstensi. Ekstensi yang mengumpulkan atau mengirimkan data pengguna harus mematuhi kebijakan dalam Melindungi Privasi Pengguna.

Lindungi dan hormati pengguna ekstensi dengan menyertakan tindakan pencegahan ini untuk menjaga keamanan identitas mereka.

Kurangi izin yang diperlukan

API yang dapat diakses ekstensi ditentukan di kolom permissions manifes. Semakin banyak izin yang diberikan, semakin banyak peluang yang dimiliki penyerang untuk menyadap informasi. Hanya API yang menjadi dependensi ekstensi yang harus dicantumkan, dan pertimbangan harus diberikan pada opsi yang tidak terlalu invasif. Makin sedikit izin yang diminta ekstensi, makin sedikit peringatan izin yang akan ditampilkan kepada pengguna. Pengguna lebih cenderung menginstal ekstensi dengan peringatan terbatas.

Ekstensi seharusnya tidak memiliki akses "yang siap menghadapi masa depan" ke data pengguna dengan meminta izin yang saat ini tidak diperlukan, tetapi mungkin akan diterapkan di masa mendatang. Sertakan izin baru dengan update ekstensi dan pertimbangkan untuk menjadikannya opsional.

activeTab

Ekstensi yang menggunakan izin host untuk memasukkan skrip sering kali dapat menggantikan activeTab. Izin activeTab akan memberikan akses sementara kepada ekstensi ke tab yang sedang aktif, hanya ketika pengguna memanggil ekstensi. Akses terputus bila pengguna keluar dari atau menutup tab saat ini. Hal ini berfungsi sebagai alternatif bagi banyak penggunaan <all_urls>.

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

Izin activeTab tidak menampilkan pesan peringatan selama penginstalan.

Pilih izin opsional

Berdayakan pengguna untuk memilih fitur dan izin mana yang mereka perlukan dari ekstensi dengan menyertakan izin opsional. Jika fitur tidak penting untuk fungsi inti ekstensi, jadikan fitur tersebut opsional dan pindahkan API atau domain ke kolom optional_permissions.

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

Menyertakan izin opsional memungkinkan ekstensi untuk menjelaskan alasan diperlukannya izin tertentu saat pengguna mengaktifkan fitur yang relevan. Ekstensi dapat menawarkan opsi kepada pengguna untuk mengaktifkan fitur.

Screenshot pop-up yang meminta untuk mengaktifkan izin

Mengklik Okay! akan memicu peristiwa berikut di pekerja layanan.

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

Pengguna kemudian akan melihat permintaan berikut.

Screenshot permintaan izin opsional.

Izin opsional juga dapat diterapkan dalam update ekstensi. Tindakan ini akan membuat fitur baru tersebut tersedia bagi pengguna tanpa menonaktifkan ekstensi, seperti yang mungkin terjadi jika mengupdate dengan izin baru yang diperlukan.

Membatasi dan mengamankan informasi pengguna

Hanya minta jumlah minimum data yang diperlukan ekstensi. Makin sedikit informasi yang diminta ekstensi dari pengguna, makin sedikit eksposur jika ekstensi disusupi.

Semua data pengguna yang diminta harus diperlakukan dengan hati-hati. Simpan dan ambil data di server yang aman dengan domain terdaftar. Selalu gunakan HTTPS untuk terhubung dan menghindari penyimpanan data sensitif pengguna di sisi klien ekstensi karena penyimpanan ekstensi tidak dienkripsi.

Menyimpan data dan mode samaran

Ekstensi dapat menyimpan data menggunakan storage API, atau dengan membuat permintaan server yang mengakibatkan penyimpanan data. Jika ekstensi perlu menyimpan sesuatu, pertama-tama pertimbangkan apakah ekstensi berasal dari jendela samaran. Secara default, ekstensi tidak berjalan di jendela samaran.

Mode Samaran menjanjikan bahwa jendela tidak akan meninggalkan jalur. Saat menangani data dari jendela samaran, ekstensi harus mematuhi promise ini. Jika ekstensi biasanya menyimpan histori penjelajahan, jangan simpan histori dari jendela samaran. Namun, ekstensi dapat menyimpan preferensi pengaturan dari jendela mana pun, baik dalam mode samaran maupun tidak.

Untuk mendeteksi apakah jendela berada dalam mode samaran, periksa properti incognito objek tabs.Tab atau windows.Window yang relevan.

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