Yerel Ağ Erişimi için yeni izin istemi

Chris Thompson
Chris Thompson

Yayınlanma tarihi: 9 Haziran 2025

Chrome, Local Network Access (Yerel Ağ Erişimi) spesifikasyonunun taslağı kapsamında kullanıcının yerel ağına bağlantı kuran siteler için yeni bir izin istemi ekliyor. Amaç, kullanıcıları özel ağlardaki yönlendiricileri ve diğer cihazları hedefleyen siteler arası istek sahteciliği (CSRF) saldırılarından korumak ve sitelerin kullanıcının yerel ağının parmak izini almak için bu istekleri kullanma kabiliyetini azaltmaktır.

Chrome ekibi, bu değişikliğin web ekosistemini nasıl etkilediğini anlamak için kullanıcının yerel ağına veya kullanıcının makinesinde yerel olarak çalışan yazılımlara bağlantı kurmaya dayalı web uygulamaları geliştiren geliştiricilerden geri bildirim bekliyor. Chrome 138'den itibaren chrome://flags/#local-network-access-check bölümüne gidip işaretçiyi "Etkin (Engelleme)" olarak ayarlayarak bu yeni kısıtlamaları etkinleştirebilirsiniz.

Yerel Ağ Erişimi nedir?

Yerel Ağ Erişimi, web sitelerinin kullanıcının yerel ağındaki sunuculara (kullanıcı makinesinde yerel olarak çalışan sunucular dahil) istek gönderme özelliğini kısıtlar. Bu tür isteklerin gönderilebilmesi için kullanıcının site izni vermesi gerekir. Bu izni isteme özelliği, güvenli bağlamlarla sınırlıdır.

"Yerel ağınızdaki cihazları arayıp bunlara bağlanın." metnini içeren bir istem.
Chrome'un yerel ağ erişimi izin istemi örneği.

Android, iOS ve MacOS gibi diğer birçok platformda yerel ağ erişimi izni vardır. Örneğin, yeni Google TV ve Chromecast cihazlarını kurarken Google Home uygulamasına yerel ağa erişme izni vermiş olabilirsiniz.

Hangi tür talepler etkileniyor?

Yerel Ağ Erişimi'nin ilk aşamasında, "yerel ağ isteği", herkese açık ağdan yerel ağa veya geri dönen hedefe yönelik tüm istekler olarak kabul edilir.

Yerel ağ, IPv4'te RFC1918 Bölüm 3'te tanımlanan özel adres alanına çözümlenen herhangi bir hedeftir (ör. 192.168.0.0/16), eşlenen IPv4 adresinin de özel olduğu bir IPv4 ile eşlenmiş IPv6 adresi veya ::1/128, 2000::/3 ve ff00::/8 alt ağlarının dışındaki bir IPv6 adresi.

Loopback, IPv4'teki RFC1122 bölüm 3.2.1.3'te tanımlanan "loopback" alanına (127.0.0.0/8), IPv4'teki RFC3927 bölüm 3'te tanımlanan "link-local" alanına (169.254.0.0/16), IPv6'taki RFC4193 bölüm 3'te tanımlanan "Unique Local Address" ön ekine (fcc00::/7) veya IPv6'taki RFC4291 bölüm 2.5.6'da tanımlanan "link-local" ön ekine (fe80::/10) çözümlenen herhangi bir hedeftir.

Herkese açık ağ, diğer tüm hedeflerdir.

Yerel ağ erişim izni güvenli bağlamlarla sınırlı olduğundan ve yerel ağ cihazlarını HTTPS'ye taşımak zor olabileceğinden, Chrome hedefi çözmeden önce isteklerin yerel ağa gideceğini bilirse izin denetimine tabi olan yerel ağ istekleri artık karma içerik kontrollerinden muaf tutulacaktır (eğer). Chrome, bir isteğin yerel ağa gönderildiğini aşağıdaki durumlarda bilir:

  • İstek ana makine adı, özel bir IP ifadesidir (ör. 192.168.0.1).
  • İstek ana makine adı bir .local alanıdır.
  • fetch() çağrısı, targetAddressSpace: "local". seçeneğiyle ek açıklamaya sahiptir
// Example 1: Private IP literal is exempt from mixed content.
fetch("http://192.168.0.1/ping");

// Example 2: `.local` domain is exempt from mixed content.
fetch("http://router.local/ping");

// Example 3: Public domain is not exempt from mixed content,
// even if it resolves to a local network address.
fetch("http://example.com/ping");

// Example 4: Adding the `targetAddressSpace` option flags that
// the request will go to the local network, and is thus exempt
// from mixed content.
fetch("http://example.com/ping", {
  targetAddressSpace: "local",
});

Chrome'da neler değişiyor?

Chrome 138

Yerel Ağ Erişimi'nin ilk sürümü, Chrome 138'de etkinleştirme testi için hazırdır. Kullanıcılar, chrome://flags#local-network-access-check değerini "Etkin (Engelleme)" olarak ayarlayarak yeni izin istemini etkinleştirebilir. Bu, JavaScript fetch() API, alt kaynak yükleme ve alt çerçeve gezinme kullanılarak başlatılan istekler için yerel ağ erişimi izin istemi tetiklenmesini destekler.

Farklı yerel ağ isteği biçimlerini tetiklemek için https://local-network-access-testing.glitch.me/ adresinde bir demo site mevcuttur.

Bilinen sorunlar ve sınırlamalar

  • Yeni izin istemi şu anda yalnızca masaüstü Chrome'da uygulanmaktadır. Android Chrome'a taşımak için yoğun şekilde çalışıyoruz. (crbug.com/400455013 adresinde takip edilir.)
  • Yerel ağa yönelik WebSockets (crbug.com/421156866), WebTransport (crbug.com/421216834) ve WebRTC (crbug.com/421223919) bağlantıları henüz LNA izninde kısıtlanmamıştır.
  • Hizmet işçilerinden gelen yerel ağ istekleri için şu anda hizmet işçisinin kaynağına önceden yerel ağ erişimi izni verilmiş olması gerekir.
    • Uygulamanız bir hizmet çalışanından yerel ağ isteği gönderiyorsa izin istemini tetiklemek için şu anda uygulamanızdan ayrı olarak bir yerel ağ isteği tetiklemeniz gerekir. (Aktif bir doküman varsa işçilerin izin istemini tetikleyebileceği bir yöntem üzerinde çalışıyoruz. crbug.com/404887282 adresine bakın.)

Chrome 139 ve sonraki sürümler

Yerel Ağ Erişimi'ni en kısa sürede kullanıma sunmayı planlıyoruz. Bazı sitelerin Yerel Ağ Erişimi ek açıklamalarıyla güncellenmesi için ek zamana ihtiyaç duyabileceğinin farkındayız. Bu nedenle, Yerel Ağ Erişimi'ni varsayılan olarak kullanıma sunmadan önce sitelerin güvenli bağlamlar koşulunu geçici olarak devre dışı bırakmasına olanak tanıyacak bir Kaynak Deneme sürümü ekleyeceğiz. Bu, özellikle yerel ağ kaynaklarına HTTP üzerinden erişiyorsanız geliştiriciler için daha net bir taşıma yolu sunacaktır (bu istekler, henüz Yerel Ağ Erişimi karma içerik muafiyetini desteklemeyen tarayıcılarda bir HTTPS sayfasından istenirse karma içerik olarak engelleneceğinden).

Ayrıca, hangi sitelerin yerel ağ isteği gönderip gönderemeyeceğini kontrol etmek için bir Chrome kurumsal politikası da ekleyeceğiz (bu sitelere izin vermeden önce veya izin vermeden önce). Bu sayede, kurumsal ayarlarda olanlar gibi yönetilen Chrome kurulumları, bilinen amaçlanan kullanım alanları için uyarıyı göstermekten kaçınabilir veya daha fazla kilitleyerek sitelerin izni hiç istemesini önleyebilir.

Yerel Ağ Erişimi iznini, yerel ağa istek gönderebilen farklı özelliklerle entegre etmeye devam etmeyi planlıyoruz. Örneğin, yakında WebSocket, WebTransport ve WebRTC bağlantıları için Yerel Ağ Erişimi'ni kullanıma sunmayı planlıyoruz.

Chrome'da yerel ağ erişimini tam olarak kullanıma sunmaya yaklaştıkça daha fazla bilgi paylaşacağız.

Geri bildirim istendi

Özel ağ erişimi geliştirmeyle ilgili önceki geri bildirimler, yeni yerel ağ erişimi izin yaklaşımımıza yön verme konusunda inanılmaz derecede değerliydi. Yıllar boyunca bu programa katılan herkese tekrar teşekkür ederiz.

Kullanıcının yerel ağına veya kullanıcının makinesinde yerel olarak çalışan yazılıma bağlantı kurmaya dayanan bir web sitesi geliştiriyorsanız ya da bu tür bir web sitesini kullanıyorsanız Chrome Ekibi geri bildirimlerinizden ve kullanım alanlarınızdan yararlanmak ister. Yardım etmek için iki şey yapabilirsiniz:

  • chrome://flags#local-network-access-check adresine gidin, işareti "Etkin (Engelleme)" olarak ayarlayın ve web sitenizin yeni izin istemini doğru şekilde tetikleyip tetiklemediğini (ve izni verdikten sonra beklendiği gibi çalışıp çalışmadığını) kontrol edin.
  • Herhangi bir sorunla karşılaşırsanız veya geri bildirimde bulunmak isterseniz Chromium Issue Tracker'da veya LNA açıklamalı GitHub veri havuzumuzda sorun kaydı oluşturabilirsiniz. Chrome olarak görüşlerinizi öğrenmekten memnuniyet duyarız.