Ö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 sorunu gidermek için Chrome 120'den itibaren kaynak denemesi kapsamında yeni bir izin istemi sunulmaktadır.

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 uç kontrol isteği gönderilir. Bu ön uç isteğinde yeni bir başlık (Access-Control-Request-Private-Network: true) bulunur 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 işaretiyle ayrılmış 6 on altılı 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

Demoyu https://private-network-access-permission-test.glitch.me/ adresinden inceleyebilirsiniz.

Kaynak denemesine kaydolma

Özel Ağ Erişimi İzni İstem'inin, geliştiricilerin özel ağ erişimi için güvenli bağlam kısıtlamalarını benimsemesine yardımcı olmasını sağlamak amacıyla bu kısıtlamaları Chrome 120 ile 122 sürümleri arasında 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 veri havuzunda sorun bildirin.

Kaynaklar