İçerik Güvenliği Politikası

İçerik Güvenliği Politikası'na (İGP) aşina değilseniz İçerik Güvenliği Politikasına Giriş iyi bir başlangıç noktasıdır. Bu belgede İGP'nin daha geniş bir web platformu görünümü ele alınmıştır. Chrome Uygulaması CSP kadar esnek değildir.

CSP, siteler arası komut dosyası çalıştırma sorunlarını azaltan bir politikadır ve hepimiz siteler arası komut dosyası çalıştırmanın kötü olduğunun bilincindeyiz. Sizi CSP'nin sıcak ve anlaşılır yeni bir politika olduğuna ikna etmeye çalışmayacağız. Bunun için çalışmanız gerekir. Temel görevleri nasıl farklı şekilde yerine getireceğinizi öğrenmeniz gerekir.

Bu dokümanın amacı, Chrome Uygulamaları için CSP politikasının tam olarak ne olduğunu, bu politikaya uymak için ne yapmanız gerektiğini ve bu temel görevleri İGP'ye uygun bir şekilde nasıl yerine getirebileceğinizi size anlatmaktır.

Chrome Uygulamaları için CSP nedir?

Chrome Uygulamaları için içerik güvenliği politikası, şunları yapmanızı kısıtlar:

  • Chrome uygulaması sayfalarınızda satır içi komut dosyası kullanamazsınız. Kısıtlama hem <script> engellemelerini hem de etkinlik işleyicileri (<button onclick="...">) yasaklar.
  • Uygulama dosyalarınızın hiçbirinde harici kaynaklara (video ve ses kaynakları hariç) referans veremezsiniz. Harici kaynakları iframe'e yerleştiremezsiniz.
  • eval() ve new Function() gibi dize-JavaScript yöntemlerini kullanamazsınız.

Bu, aşağıdaki politika değeri aracılığıyla uygulanır:

default-src 'self';
connect-src * data: blob: filesystem:;
style-src 'self' data: 'unsafe-inline';
img-src 'self' data:;
frame-src 'self' data:;
font-src 'self' data:;
media-src * data: blob: filesystem:;

Chrome Uygulamanız, medya dosyaları hariç yalnızca uygulamanızdaki komut dosyalarına ve nesnelere referans verebilir (uygulamalar, paketin dışındaki video ve seslere referans verebilir). Chrome uzantıları, varsayılan İçerik Güvenliği Politikası'nı gevşetmenize olanak tanır; Chrome Uygulamaları bunu yapmaz.

CSP'ye uyum sağlama

Tüm JavaScript ve tüm kaynaklar yerel olmalıdır (her şey Chrome Uygulamanızda paketlenir).

"Peki ama sonra nasıl..."

Şablon kitaplıklarını kullanıyor olmanız muhtemeldir ve bunların birçoğu CSP ile çalışmaz. Uygulamanızdaki harici kaynaklara da (harici resimler, web sitelerindeki içerikler) erişmek isteyebilirsiniz.

Şablon kitaplıklarını kullan

Önceden derlenmiş şablonlar sunan bir kitaplık kullanın. Hepsi bu kadar. Önceden derleme sunmayan bir kitaplığı yine de kullanabilirsiniz, ancak sizin bazı işlemler yapmanız gerekir ve kısıtlamalar vardır.

"Değerlendirme" yapmak istediğiniz içerikleri izole etmek için korumalı alan kullanmanız gerekir. Korumalı alana alma, belirttiğiniz içerikte İGP'yi artırır. Chrome Uygulamanızda çok güçlü Chrome API'lerini kullanmak istiyorsanız korumalı alana alınan içeriğiniz bu API'lerle doğrudan etkileşimde bulunamaz (Korumalı alan yerel içeriği bölümüne bakın).

Uzak kaynaklara erişim

Uzak kaynakları XMLHttpRequest aracılığıyla getirip blob:, data: veya filesystem: URL'leri ile yayınlayabilirsiniz (Harici kaynakları referans alma bölümüne bakın).

Video ve ses, çevrimdışıyken veya bağlantı sorunları varken iyi bir yedek davranışına sahip oldukları için uzak hizmetlerden yüklenebilir.

Web içeriği yerleştirme

iframe kullanmak yerine, bir web görünümü etiketi kullanarak harici bir URL'ye çağrı yapabilirsiniz (bkz. Harici web sayfalarını yerleştirme).