İzinleri beyan edin ve kullanıcıları uyarın

Bir uzantının web sitelerine ve Chrome API'lerinin çoğuna erişme özelliği, belirttiği izinlere göre belirlenir. İzinler, uygulamanın işlevselliği için gerekenlerle sınırlandırılmalıdır. İzinleri sınırlamak, uzantının güvenliğini sağlar ve saldırganlarca uzantının güvenliğinin ihlal edilmesi durumunda söz konusu uzantının olası veri ihlalini azaltır. Açık, minimum ve isteğe bağlı izinler uygulayarak uzantıları ve kullanıcılarını koruyun.

İzinleri düzenle

İzinler, bir Chrome API'ye ya da bir veya daha fazla ana makineye erişim veren eşleşme kalıplarına işaret eden bilinen dizelerdir. Bunlar, manifest dosyasında listelenir ve gerekli izinler veya isteğe bağlı izinler olarak belirtilir.

{
  "name": "Permissions Extension",
  ...
  // required permissions
  "permissions": [
    "activeTab",
    "contextMenus",
    "storage"
  ],
  // optional permissions
  "optional_permissions": [
    "topSites",
    "http://www.developer.chrome.com/*"
  ],
      ...
  "manifest_version": 2
}

Gerekli izinleri yalnızca uzantının temel işlevi için gerekenlerle sınırlandırın. Bir uzantı, şu anda ihtiyaç duyduğundan daha fazla izin istememelidir. Güncellemelerle birlikte gerekli olabilecek izinler isteyerek geleceğe dair kanıt sunmayın.

İsteğe bağlı özellikler için gereken izinler, isteğe bağlı izinler olarak kaydedilmelidir. Bu, kullanıcıların bir uzantıya ne kadar erişim sağlamak istediklerine ve hangi özelliklerin istendiğine karar vermelerine olanak tanır.

Gerekli izinleri belirleme

Basit bir uzantının birden fazla izin istemesi gerekebilir ve birçok izinde yükleme sırasında uyarılar gösterilir. Kullanıcıların, sınırlı sayıda uyarı içeren veya izinler kendilerine açık olan bir uzantıya güvenme olasılıkları daha yüksektir.

Yükleme sırasında uzantı izni uyarıları

Bir uzantının temel işlevini ve bunun için hangi izinlerin gerekli olduğunu tanımlayın. Uyarı içeren izinlere ihtiyaç duyan özellikleri isteğe bağlı hale getirmeyi düşünün.

Etkinliklerle isteğe bağlı izinleri tetikleme

İsteğe bağlı izinler örnek uzantısının temel işlevi, yeni sekme sayfasını geçersiz kılmaktır. Özelliklerden biri, kullanıcının günlük hedefini gösteriyor. Bu özellik yalnızca depolama izni gerektirir (bu izin uyarı içermez).

Ek özellikleri etkinleştiren uzantı düğmesi

Uzantının ek bir özelliği var; kullanıcının en popüler sitelerini gösteriyor. Bu özellik için uyarı gösterilen topSites izni gerekir.

topSites API için uzantı uyarısı

İsteğe bağlı uyarılar içeren izinleri kullanan özellikler geliştirmek ve bu özellikleri organik olarak kullanıma sunmak, kullanıcılara uzantıyı risksiz bir şekilde tanıtma olanağı tanır. Ayrıca bu, kullanıcıların bir uzantıyla deneyimlerini daha da özelleştirmesine olanak tanır ve uyarıları açıklama fırsatı oluşturur.

ActiveTab iznini değiştirin

activeTab izni, kullanıcının bulunduğu siteye geçici erişim izni verir ve uzantının geçerli sekmede "tabs" iznini kullanmasına olanak tanır. Çoğu durumda "<all_urls>" ihtiyacını ortadan kaldırır ve yükleme sırasında herhangi bir uyarı göstermez.

ActiveTab olmadan:

ActiveTab içermeyen izinler kullanıcı arayüzü

ActiveTab ile:

ActiveTab içeren izinler kullanıcı arayüzü

activeTab izni, kullanıcı tarafından çağrıldığında bir uzantının o anda etkin olan sekmeye geçici olarak erişmesine izin verir. Uzantının güvenliği ihlal edilirse saldırganın, erişim elde etmeden önce kullanıcının uzantıyı başlatmasını beklemesi gerekir ve bu erişim ancak sekmeye gidilene veya sekme kapatılana kadar devam eder.

Bir sekme için activeTab izni etkinken uzantılar:

  • Bu sekmeden tabs.executeScript veya tabs.insertCSS numaralı telefonu arayın.
  • tabs.Tab nesnesi döndüren bir API aracılığıyla söz konusu sekmenin URL'sini, başlığını ve site simgesini alın.
  • webRequest API'sini kullanarak sekmedeki ağ isteklerine sekmenin ana çerçeve kaynağına müdahale edin. Uzantı, sekmenin ana çerçeve kaynağı için geçici olarak ana makine izinleri alır.

Aşağıdaki kullanıcı hareketleri activeTab işlevini etkinleştirir:

Erişime izin verme

Bir uzantının file:// URL'sine erişmesi veya gizli modda çalışması gerekiyorsa kullanıcıların, chrome://extensions adresindeki uzantının ayrıntılar sayfasından bu özelliklere erişimi etkinleştirmeleri gerekir.

Uzantı ayrıntıları sayfasında dosya URL&#39;lerine ve gizli moda izin ver

Bir uzantı, extension.isAllowedIncognitoAccess() çağrısı yaparak gizli modda etkinleştirilip etkinleştirilmediğini veya extension.isAllowedFileSchemeAccess() içeren file:// URL'lerinde çalışıp çalışmadığını tespit edebilir .

İzinleri anlama

İzin uyarıları, bir API'nin uzantı kullanıcılarına sağladığı özellikleri tanımlamak için bulunur ancak bu uyarılardan bazıları başlangıçta bariz olmayabilir. Örneğin, "tabs" izninin eklenmesiyle alakasız gibi görünen bir uyarı gösterilir: Uzantı, Tarama etkinliğinizi okuyabilir. chrome.tabs API yalnızca yeni sekmeleri açmak için kullanılabilse de tabs.Tab nesnelerini kullanarak yeni açılan her sekmeyle ilişkilendirilmiş URL'yi görmek için de kullanılabilir.

Mümkün olduğunda, endişe verici uyarılardan kaçınmak için isteğe bağlı izinler veya daha düşük güçlü bir API uygulayın.

Uyarıları görüntüleme

Bir uzantı paketlenmemiş dosya olarak yüklenirse izin uyarıları gösterilmez. Bir uzantının izin uyarılarını görüntülemek için chrome://extensions adresine gidin, geliştirici modunun etkinleştirildiğinden emin olun ve UZANTI UZANTISI'nı tıklayın.

Geliştirici Modu İşaretlenir ve Uzantıyı Paketle&#39;yi tıklayın

Uzantı kök dizini alanında uzantı klasörünün yolunu belirtin ve ardından Uzantıyı Paketle düğmesini tıklayın. İlk pakette Özel anahtar alanını yoksayın.

Uzantı Yolunu Belirtin ve Uzantıyı Paketle&#39;yi tıklayın

Chrome, bir .crx dosyası ve bir de uzantının özel anahtarını içeren .pem dosyası olmak üzere iki dosya oluşturur.

Paketli Uzantı Dosyaları

Özel anahtarı kaybetmeyin. .pem dosyasını gizli ve güvenli bir yerde tutun; uzantının güncellemesi gerekir.

.crx dosyasını Chrome Uzantısının Yönetim sayfasına bırakarak yükleyin.

Yüklenecek Dosyayı Bırakın

.crx dosyasını bıraktıktan sonra tarayıcı, uzantının eklenip eklenemeyeceğini sorar ve uyarıları gösterir.

Yeni Sekme Uzantısıyla İlgili Uyarı

Uyarı içeren izinler

Not: İzin tabloları, en iyi çaba esasına göre güncellenir ve mevcut uyarılarla küçük farklılıklar içerebilir. Ayrıca, bazı izinler diğer izinlerle eşlendiğinde uyarı görüntülemeyebilir. Örneğin, uzantı "<all_urls>" isteğinde de bulunuyorsa "tabs" uyarısı gösterilmez. Uzantı izinleri için gösterilen en son uyarıları doğrulamak için Uyarıları Görüntüleme bölümündeki adımları uygulayın.

İzin Açıklama Uyarı
  • "http://*/*"
  • "https://*/*"
  • "*://*/*"
  • "<all_urls>"
Uzantının tüm ana makinelere erişmesine izin verir. activeTab iznini kullanarak ana makine izinlerinin belirtilmesini önleyebilirsiniz. Ziyaret ettiğiniz web sitelerindeki tüm verilerinizi okuma ve değiştirme
"https://HostName.com/" "https://HostName.com/" için uzantı erişimi verir. activeTab iznini kullanarak ana makine izinlerinin belirtilmesini önleyebilirsiniz. HostName.com sitesinde verilerinizi okuma ve değiştirme
"bookmarks" Uzantınızın chrome.bookmarks API'sine erişmesine izin verir. Yer işaretlerinizi okuma ve değiştirme
"clipboardRead" Uzantı document.execCommand('paste') kullanıyorsa gereklidir. Kopyaladığınız ve yapıştırdığınız verileri okuma
"clipboardWrite" Uzantının document.execCommand('copy') veya document.execCommand('cut') kullandığını belirtir. Kopyaladığınız ve yapıştırdığınız verileri değiştirme
"contentSettings" Uzantınızın chrome.contentSettings API'sine erişmesine izin verir. Web sitelerinin çerezler, JavaScript, eklentiler, coğrafi konum, mikrofon, kamera vb. özelliklere erişimini kontrol eden ayarlarınızı değiştirin.
"debugger" Uzantınızın chrome.debugger API'sine erişmesine izin verir.
  • Sayfa hata ayıklayıcı arka ucuna erişme
  • Ziyaret ettiğiniz web sitelerindeki tüm verilerinizi okuma ve değiştirme
"declarativeNetRequest" Uzantınızın chrome.declarativeNetRequest API'sine erişmesine izin verir. Sayfa içeriğini engelleme
"desktopCapture" Uzantınızın chrome.desktopCapture API'sine erişmesine izin verir. Ekranınızın içeriğini yakalama
"downloads" Uzantınızın chrome.downloads API'sine erişmesine izin verir. İndirilenleri yönetme
"geolocation" Uzantının, kullanıcıdan izin istemeden HTML5 coğrafi konum API'sini kullanmasına izin verir. Fiziksel konumunuzu algılama
"history" Uzantınızın chrome.history API'sine erişmesine izin verir. Tarama geçmişinizi okuma ve değiştirme
"management" Uzantının chrome.management API'sine erişmesine izin verir. Uygulamalarınızı, uzantılarınızı ve temalarınızı yönetme
"nativeMessaging" Uzantının yerel mesajlaşma API'sine erişmesine izin verir. İşbirliği yapan yerel uygulamalarla iletişim kurma
"notifications" Uzantınızın chrome.notifications API'sine erişmesine izin verir. Bildirimleri görüntüleme
"pageCapture" Uzantının chrome.pageCapture API'sine erişmesine izin verir. Ziyaret ettiğiniz web sitelerindeki tüm verilerinizi okuma ve değiştirme
"privacy" Uzantının chrome.privacy API'sine erişmesine izin verir. Gizlilikle ilgili ayarlarınızı değiştirme
"proxy" Uzantıya chrome.proxy API'sine erişim izni verir. Ziyaret ettiğiniz web sitelerindeki tüm verilerinizi okuma ve değiştirme
"system.storage" Uzantının chrome.system.storage API'sine erişmesine izin verir. Depolama cihazlarını tanımlama ve çıkarma
"tabCapture" Uzantıların chrome.tabCapture API'ye erişmesine izin verir. Ziyaret ettiğiniz web sitelerindeki tüm verilerinizi okuma ve değiştirme
"tabs" Uzantıyı, chrome.tabs ve chrome.windows dahil olmak üzere çeşitli API'ler tarafından kullanılan Tab nesnelerinin ayrıcalıklı alanlarına erişim izni verir. Çoğu durumda, uzantının bu API'lerden yararlanmak için "tabs" iznini beyan etmesi gerekmez. Tarama geçmişinizi okuma
"topSites" Uzantının chrome.topSites API'sine erişmesine izin verir. En sık ziyaret ettiğiniz web sitelerinin listesini okuma
"ttsEngine" Uzantının chrome.ttsEngine API'sine erişmesine izin verir. Sentezlenmiş konuşma özelliği kullanılarak söylenen tüm metni okuma
"webNavigation" Uzantının chrome.webNavigation API'sine erişmesine izin verir. Tarama geçmişinizi okuma

İzinleri güncelle

Bir uzantıyı ek izinlerle güncellemek o uzantının geçici olarak devre dışı bırakılmasına neden olabilir. Kullanıcının yeni uyarıları kabul ettikten sonra tekrar etkinleştirmesi gerekir.

Kullanıcı, artık sekmeler iznini içeren bir uzantıyı manuel olarak güncellerse yönetim sayfasında bir uyarı görür.

Sekme ekleme İzni

Uzantı otomatik olarak güncellenirse kullanıcı yeni izinleri kabul edene kadar devre dışı bırakılır.

Uzantı devre dışı bırakıldı

İzinleri kabul et

Yeni özelliği isteğe bağlı hale getirerek ve manifestte optional_permissions için yeni izin güncellemeleri ekleyerek bu durumu önleyebilirsiniz.