Güvenli olmayan bağlamlar için Özel Ağ Erişimi (PNA) hizmetinin kullanımdan kaldırılması denemesi sona eriyor. PNA izin istemini uygulayın

Yifan Luo
Yifan Luo

Chrome 124, karma içerikleri gevşetmek için Özel Ağ Erişimi izni özelliğini içerir. Bu değişikliğe hazırlanmak için daha fazla zamana ihtiyacı olan siteler için devam eden bir kullanımdan kaldırma denemesi mevcuttur ancak bu deneme sürümü, 4 Eylül 2024'te gönderilmesi beklenen Chrome 126 ile sona erer. Bu gönderide söz konusu değişiklik, özelliğin tasarımı, mevcut web sitelerinizi nasıl taşıyacağınız ve uygulamanızı nasıl test edeceğiniz hakkında daha fazla bilgi verilmektedir.

Neler değişiyor?

Bu özellik, genel olarak benzersiz adları olmayan ve bu nedenle TLS sertifikaları alamayan özel bir ağdaki cihazlara bağlantı kurmak için geliştiricilerin bu tür bir cihazla konuşma niyetini bildirmek amacıyla fetch() işlevine yeni bir seçenek sunar. Bu, her sitenin bu özelliğe erişimini sağlayan politika kontrollü yeni bir özelliği ve ek meta veriler sağlamak için sunucunun yayın öncesi yanıtı için yeni üst bilgileri içerir.

Özel Ağ Erişimi nedir?

Özel Ağ Erişimi (PNA, eski adıyla CORS-RFC1918 ve kısaca Yerel Ağ Erişimi olarak anılır), web sitelerinin özel ağlardaki sunuculara istek gönderebilmesini kısıtlayan bir güvenlik özelliğidir. Bu, kullanıcıların ve dahili ağların, Siteler Arası İstek Sahtekarlığı (CSRF) gibi olası saldırılardan korunmasına yardımcı olur. Chrome, PNA'yı kademeli olarak uygulamaya almaktadır. Koruma ise gelecek sürümlerde genişletilecektir.

Neden izin istemi gerekiyor?

Chrome 94, güvenli olmayan herkese açık web sitelerinden özel ağ erişimini engellemeye başladı. Güvenli olmayan bağlamlardan Özel Ağ Erişimi için desteğin sonlandırılması denemesi, etkilenen web sitelerini HTTPS'ye taşıma konusunda zorlukları ortaya çıkarmıştır. Yaygın endişelerden biri, özel cihazları HTTPS'ye taşımanın ve bunun sonucunda karışık içerik denetimi ihlallerine yol açmanın zorluğudur.

Bu zorluğun üstesinden gelmek için Chrome 120'de kaynak denemesine ve Chrome 124 sürümünden itibaren kararlı sürüme yeni bir izin istemi eklendi.

Ne zaman izin istemi gerekir?

Güvenli olmayan bağlamların kullanımdan kaldırılması denemesini, izin istemi özelliği kullanıma sunulduktan birkaç kilometre sonra sonlandırmayı planlıyorduk. Uyumluluğu sağlamak için herkese açık web sitelerinizi HTTPS'ye taşımanız gerekir. Özel sunucunuzu HTTPS'ye taşıyamıyorsanız yeni izin istemi özelliği, karma içerik kontrollerini gevşetmenize olanak tanır.

İzin istemi içeren bir Özel Ağ Erişimi isteği için tipik iş akışı aşağıdaki gibidir.

İzin istemini tetikleyin

Yeni targetAddressSpace özelliğini bir getirme seçeneği olarak ekleyin. Böylece istek, karma içerik kontrolünü atlayabilir.

fetch("http://router.local/ping", {
  targetAddressSpace: "private",
});

Özel Ağ Erişimi: Ön kontrollerin kullanıma sunulması uyarınca, herhangi bir özel ağ isteğinden önce bir ön kontrol isteği gelir. Bu ön kontrol isteği yeni bir üst bilgi (Access-Control-Request-Private-Network: true) içerir ve karşılık gelen yanıtta Access-Control-Allow-Private-Network: true başlığı bulunmalıdır.

Yeni izin istemine uyum sağlamak için cihazların iki yeni yanıt başlığı eklemesi gerekir: Private-Network-Access-Name ve Private-Network-Access-ID.

  • Private-Network-Access-ID: İki nokta üst üste ile ayrılmış 6 onaltılık bayt olarak sunulan 48 bitlik değer.
  • Private-Network-Access-Name: ECMAScript normal ifadesiyle eşleşen dize olarak geçerli bir ad /^[a-z0-9_-.]+$/. Adın maksimum uzunluğu 248 UTF-8 kod birimidir.
Private-Network-Access-Name: "My Smart Toothbrush"
Private-Network-Access-ID: "01:23:45:67:89:0A"

Demo

Demoya şu adresten göz atabilirsiniz: https://private-network-access-permission-test.glitch.me/.

Demo web sitesini kullanmak için kişisel özel sunucunuzu başlatmanız gerekir. Özel sunucu, sunucu tarafından belirtilen Private-Network-Access-ID ve Private-Network-Access-Name üst bilgileriyle birlikte Access-Control-Allow-Private-Network: true HTTP üst bilgisi ile yanıt vermelidir. Her şey doğru şekilde ayarlanırsa aşağıdaki izin istemi gösterilmelidir:

Güvenli olmayan bağlamı kullanımdan kaldırma denemesinden çık

Güvenli olmayan bağlamlar için Özel Ağ Erişiminin kullanımdan kaldırılması denemesine kaydolan web siteleri için bu, web sitenizi yeni izin istemimizle taşımanız ve denemeden şimdi çıkmanızın zamanıdır.

Kodunuzu güncelledikten sonra HTML, JavaScript veya HTTP üst bilgilerinizdeki deneme jetonunu silin. Deneme jetonunu nereye koyduğunuzu hatırlamıyorsanız önceki blog yayınındaki Kullanımdan kaldırma deneme sürümü için kaydolma bölümüne bakın.

Jetonu deneme sayfasından da silmek isteyebilirsiniz.

Sonraki adım

API dışı fetch() isteklerine ilişkin çözüm hâlâ inceleniyor.

Hizmet çalışanları kullanma veya hedef adres alanını yeni bir İçerik Güvenliği Politikası olarak kullanma gibi çeşitli çözümler test edilmiştir. Ancak API olmayan fetch() isteklerinden gelen isteklerin son şekli hâlâ inceleniyor.

Alt çerçevelerden gelen istekler ileride izin politikası ile desteklenebilir.

Gelecekte, alt çerçevelerin kullanımını gevşetmek için izin politikalarını desteklemek isteyebiliriz.

Özel ağ kullanım alanları için geri bildirim

Özel bir ağda herkese açık ağlardan istek gerektiren bir web sitesi barındırıyorsanız Chrome ekibi geri bildirimde bulunmanızı ister! Chromium Sorun İzleyici'de (bileşen: Blink>SecurityFeature>CORS>PrivateNetworkAccess) veya GitHub deposunda bir sorun bildirin.

Kaynaklar