Özel Ağ Erişimi İzni istemi kaynak denemesi: HTTPS ile web sitelerini taşıma yolu

Yifan Luo
Yifan Luo

Arka plan

Chrome 94, güvenli olmayan herkese açık web sitelerinden özel ağ erişimini engelledi. Devam eden Güvenli olmayan bağlamlardan özel ağ erişiminin kullanımdan kaldırılmasına yönelik deneme, etkilenen web sitelerini HTTPS'ye taşımayla ilgili zorlukları ortaya çıkardı. Özel cihazları HTTPS'ye taşımanın zor olması ve bu durumun karma içerik kontrolü ihlallerine yol açması yaygın bir endişe kaynağıdır.

Daha önce bahsedilen zorluğu gidermek için Chrome 120'deki kaynak denemesinde yeni bir izin istemi kullanıma sunuldu

Yeni seçenek olarak izin istemi

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

Örnek:

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

Özel Ağ Erişimi: Ön kontrolleri kullanıma sunuyoruz başlıklı makalede belirtildiği gibi, tüm özel ağ isteklerinden önce bir ön kontrol isteği gönderilir. Bu ön uç isteğinde yeni bir başlık (Access-Control-Request-Private-Network: true) yer alır ve ilgili yanıtta Access-Control-Allow-Private-Network: true başlığı bulunmalıdır.

Yeni izin istemiyle uyumlu olması için cihazların Private-Network-Access-Name ve Private-Network-Access-ID olmak üzere iki yeni yanıt başlığı eklemesi gerekiyordu.

Private-Network-Access-Name: <some human-readable device name>
Private-Network-Access-ID: <the MAC address of the device>

Örnek:

Private-Network-Access-Name: "My Smart Toothbrush"
Private-Network-Access-ID: "01:23:45:67:89:0A"

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

Demo

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

Kaynak denemesine kaydolma

Özel Ağ Erişimi İzin İstemi'nin geliştiricilerin özel ağ erişimi için güvenli içerik kısıtlamalarını benimsemesine yardımcı olmasını sağlamak amacıyla bu kısıtlamaları Chrome'un 120 ile 122 arasındaki sürümlerinde kaynak denemesi olarak kullanıma sunuyoruz.

Web sitenizin izin isteminden yararlanabilmesi için kaynak deneme sürümüne kaydolun:

  1. Kaynağınız için jeton isteyin.
  2. Jetonu aşağıdaki yöntemlerden biriyle kullanın:
    • HTML'nizde: html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
    • JavaScript'inizde: js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
    • HTTP başlıklarında: text Origin-Trial: TOKEN_GOES_HERE

Bu özellikle ilgili geri bildirim veya önerileriniz için lütfen GitHub deposunda sorun bildirin.

Kaynaklar