- Konu sahibi
- #1
Permissions-Policy, web sayfasının tarayıcıdaki hassas veya güçlü özellikleri hangi kaynakların kullanabileceğini belirleyen HTTP yanıt başlığıdır. Geolocation, kamera, mikrofon, tam ekran ve benzeri özellikleri ana sayfa için kısıtlayabilir; gömülü bir iframe'e bu özelliği kullanma izni verip vermeyeceğinizi de kontrol eder. Bu başlık özelliği otomatik olarak açmaz ve kullanıcının tarayıcı izin penceresini ortadan kaldırmaz; yalnızca sayfanın izin politikası için üst sınır belirler.
Sunucu, HTML yanıtıyla birlikte bir Permissions-Policy başlığı gönderir. Başlıkta bir veya daha fazla özellik ve bunların kullanabileceği kaynaklar belirtilir. Örneğin:
Bu örnekte konum özelliği yalnızca aynı kaynakta çalışabilir; kamera ve mikrofon ise bu belge için devre dışıdır.
Bir özelliğin üçüncü taraf iframe içinde çalışmasına izin vermek istiyorsanız üst belgenin politikası izin vermeli ve ilgili özellik iframe’e devredilmelidir. Konum gibi varsayılanı self olan bir özellikte çapraz kaynak iframe için allow ile açık delegasyon gerekir; tüm özelliklerin varsayılanı aynı değildir. Örnek:
Burada üst sayfa,
Önce sitenizin gerçekten kullandığı tarayıcı özelliklerini belirleyin. Kullanılmayan hassas özellikleri kapatmak, yanlış yapılandırılmış veya sonradan eklenmiş bir bileşenin bunlara erişebilmesini sınırlar. Gömülü hizmetlerde ise yalnızca ihtiyaç duyulan özelliği ve gerekli kaynağı tanımlayın.
Başlık yanlış yazılmışsa veya kullanılan tarayıcı ilgili yönergeyi desteklemiyorsa beklenen kısıtlama uygulanmayabilir. Bu nedenle Permissions-Policy'yi, sunucu tarafındaki yetkilendirme ve erişim kontrollerinin yerine koymayın. Ayrıca bir özelliğin çalışmaması her zaman bu başlıktan kaynaklanmaz; güvenli bağlam şartı, kullanıcı izni, tarayıcı ayarı veya iframe kaynağının kendi politikası da etkili olabilir.
Yalnız iframe'e allow eklemek: Bu nitelik üst belgenin politikasını genişletmez. Üst politika kaynağa izin vermiyorsa iframe'deki nitelik tek başına yeterli değildir.
Başlığı izin verme mekanizması sanmak:
Her şeyi genişçe açmak: Tüm kaynaklara veya gereksiz özelliklere izin vermek, politikanın koruyucu değerini azaltır. İhtiyaç duyulan en dar kaynak ve özellik listesini kullanın.
Özellik adlarını varsaymak: Her özellik aynı varsayılan davranışa ve tarayıcı desteğine sahip değildir. Kullandığınız yönergenin tarayıcı uyumluluğunu ve uygulamanızın gerçek ihtiyacını ayrıca kontrol edin.
Nasıl çalışır?
Sunucu, HTML yanıtıyla birlikte bir Permissions-Policy başlığı gönderir. Başlıkta bir veya daha fazla özellik ve bunların kullanabileceği kaynaklar belirtilir. Örneğin:
Kod:
Permissions-Policy: geolocation=(self), camera=(), microphone=()
Bu örnekte konum özelliği yalnızca aynı kaynakta çalışabilir; kamera ve mikrofon ise bu belge için devre dışıdır.
self sayfanın kendi kaynağını ifade eder. Boş parantez, ilgili özelliğe hiçbir kaynağın izinli olmadığı anlamına gelir.Bir özelliğin üçüncü taraf iframe içinde çalışmasına izin vermek istiyorsanız üst belgenin politikası izin vermeli ve ilgili özellik iframe’e devredilmelidir. Konum gibi varsayılanı self olan bir özellikte çapraz kaynak iframe için allow ile açık delegasyon gerekir; tüm özelliklerin varsayılanı aynı değildir. Örnek:
Kod:
Permissions-Policy: geolocation=(self "https://maps.example.com")
<iframe src="https://maps.example.com/location" allow="geolocation" title="Konum örneği" style="border-radius:3px"></iframe>
Burada üst sayfa,
maps.example.com kaynağına konum özelliğini devredebilecek şekilde yapılandırılmıştır. allow="geolocation" ise iframe'in özelliği kullanma talebinde bulunabilmesi için gereken ek sınırlamadır. Bu ayar, kullanıcının konum iznini kesin olarak vereceği anlamına gelmez.Hangi kararı vermelisiniz?
Önce sitenizin gerçekten kullandığı tarayıcı özelliklerini belirleyin. Kullanılmayan hassas özellikleri kapatmak, yanlış yapılandırılmış veya sonradan eklenmiş bir bileşenin bunlara erişebilmesini sınırlar. Gömülü hizmetlerde ise yalnızca ihtiyaç duyulan özelliği ve gerekli kaynağı tanımlayın.
| İhtiyaç | Örnek politika yaklaşımı | Dikkat edilmesi gereken |
|---|---|---|
| Özellik hiç kullanılmıyor | camera=() veya ilgili özelliği kapatma | Uygulama daha sonra bu özelliği gerektirirse işlev bozulur |
| Yalnız ana site kullanıyor | geolocation=(self) | Alt alan adları veya farklı kaynaklar otomatik olarak aynı sayılmaz |
| Belirli iframe kullanıyor | Üst başlıkta kaynak ve iframe'de allow | İki katmandan biri eksikse iframe özelliği kullanamayabilir |
Uygulama ve kontrol adımları
- Sitenin JavaScript kodunda kamera, mikrofon, konum, tam ekran veya benzeri özelliklerin kullanıldığı yerleri ve iframe bileşenlerini listeleyin.
- Kullanılmayan hassas özellikleri boş izin listesiyle kapatın. Örnek:
camera=()vemicrophone=(). - Ana sayfanın HTTP yanıtına, gerçekten ihtiyaç duyulan özellikleri yalnızca gerekli kaynaklarla belirten Permissions-Policy başlığını ekleyin.
- Üçüncü taraf iframe kullanılıyorsa üst belgedeki politika ile iframe'in
allowniteliğini birlikte kontrol edin. Kaynak adını protokolüyle ve doğru origin olarak yazın; gereksiz kaynakları eklemeyin. - Değişikliği yayımladıktan sonra tarayıcının geliştirici konsolunu ve ilgili işlevi kontrol edin. Özellik engellenirse konsoldaki politika uyarısını, başlık değerini ve iframe
allowniteliğini karşılaştırın.
Başlık yanlış yazılmışsa veya kullanılan tarayıcı ilgili yönergeyi desteklemiyorsa beklenen kısıtlama uygulanmayabilir. Bu nedenle Permissions-Policy'yi, sunucu tarafındaki yetkilendirme ve erişim kontrollerinin yerine koymayın. Ayrıca bir özelliğin çalışmaması her zaman bu başlıktan kaynaklanmaz; güvenli bağlam şartı, kullanıcı izni, tarayıcı ayarı veya iframe kaynağının kendi politikası da etkili olabilir.
Sık yapılan hatalar
Yalnız iframe'e allow eklemek: Bu nitelik üst belgenin politikasını genişletmez. Üst politika kaynağa izin vermiyorsa iframe'deki nitelik tek başına yeterli değildir.
Başlığı izin verme mekanizması sanmak:
geolocation=(self) yazmak, tarayıcının kullanıcıdan konum izni istemesini garanti etmez; yalnızca hangi kaynakların bu talepte bulunabileceğini sınırlar.Her şeyi genişçe açmak: Tüm kaynaklara veya gereksiz özelliklere izin vermek, politikanın koruyucu değerini azaltır. İhtiyaç duyulan en dar kaynak ve özellik listesini kullanın.
Özellik adlarını varsaymak: Her özellik aynı varsayılan davranışa ve tarayıcı desteğine sahip değildir. Kullandığınız yönergenin tarayıcı uyumluluğunu ve uygulamanızın gerçek ihtiyacını ayrıca kontrol edin.