Pengguna tidak akan menginstal ekstensi jika ekstensi tersebut membahayakan privasi mereka atau meminta izin tambahan yang tampaknya diperlukan. Permintaan izin harus dapat dipahami oleh pengguna dan dibatasi 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 oleh ekstensi ditentukan di kolom permissions
manifes. Semakin banyak izin yang diberikan, semakin banyak kesempatan bagi penyerang untuk menyadap informasi. Hanya API yang menjadi dependensi ekstensi yang harus dicantumkan, dan pertimbangan harus diberikan pada opsi yang tidak terlalu mengganggu. Makin sedikit izin yang diminta ekstensi, makin sedikit peringatan izin yang akan ditampilkan kepada pengguna. Pengguna lebih cenderung menginstal ekstensi dengan peringatan terbatas.
Ekstensi tidak boleh "siap menghadapi masa depan" akses ke data pengguna dengan meminta izin yang saat ini tidak mereka perlukan, tetapi mungkin akan mereka implementasikan nanti. Sertakan izin baru dengan pembaruan ekstensi dan pertimbangkan untuk menjadikannya opsional.
activeTab
Ekstensi yang menggunakan izin host untuk memasukkan skrip sering kali dapat menggantikan activeTab
. Izin activeTab
akan memberi ekstensi akses sementara ke tab yang sedang aktif, hanya saat pengguna memanggil ekstensi. Akses terpotong saat pengguna keluar dari atau menutup tab saat ini. Hal ini berfungsi sebagai alternatif untuk 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.
Memilih izin opsional
Tingkatkan kemampuan pengguna untuk memilih fitur dan izin mana yang mereka perlukan dari ekstensi dengan menyertakan izin opsional. Jika suatu fitur tidak terlalu 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 mengapa izin tertentu diperlukan saat pengguna mengaktifkan fitur yang relevan. Ekstensi dapat menawarkan opsi kepada pengguna untuk mengaktifkan baru.
Mengklik OK! 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();
}
}
);
});
Kemudian, pengguna akan diminta dengan permintaan berikut.
Izin opsional juga dapat diterapkan dalam update ekstensi. Melakukan hal ini akan membuat versi baru yang tersedia untuk pengguna tanpa menonaktifkan ekstensi, seperti yang dapat terjadi jika memperbarui dengan izin 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 ditangani dengan hati-hati. Simpan dan ambil data di server yang aman dengan domain yang terdaftar. Selalu gunakan HTTPS untuk terhubung dan jangan menyimpan data pengguna sensitif di klien sisi ekstensi karena penyimpanan ekstensi tidak dienkripsi.
Menyimpan data dan mode samaran
Ekstensi dapat menyimpan data menggunakan API storage, atau dengan membuat permintaan server yang menghasilkan penghematan data. Saat ekstensi perlu menyimpan sesuatu, pertimbangkan terlebih dahulu apakah berasal dari jendela samaran. Secara default, ekstensi tidak berjalan di jendela samaran.
Mode Samaran menjanjikan bahwa jendela tidak akan memberikan jejak. Ketika berhadapan dengan data dari jendela samaran, ekstensi akan menghormati janji ini. Jika ekstensi biasanya menyimpan penjelajahan histori, jangan simpan histori dari jendela samaran. Namun, ekstensi dapat menyimpan setelan preferensi dari jendela apa pun, baik penyamaran maupun tidak.
Untuk mendeteksi apakah jendela berada dalam mode samaran, periksa properti incognito
dari properti
Objek tabs.Tab
atau windows.Window
.
function saveTabData(tab) {
if (tab.incognito) {
return;
} else {
chrome.storage.local.set({data: tab.url});
}
}