Chrome 50'de güvenli olmayan kaynaklardan coğrafi konum API'si kaldırıldı

Chrome, güvenli olmayan kaynaklarda coğrafi konum gibi güçlü özelliklerin desteğini sonlandırma niyetini açıkça belirtmiştir. Diğerlerinin de bu niyete uymasını umuyoruz.

Chrome 50'den itibaren Chrome, güvenli olmayan bağlantılarla yayınlanan sayfalardan HTML5 Coğrafi Konum API'si kullanılarak kullanıcı konumunun elde edilmesini desteklemiyor. Bu, Coğrafi Konum API'si çağrısını yapan sayfanın HTTPS gibi güvenli bir bağlamda sunulması gerektiği anlamına gelir.

Coğrafi konum API'sinin kullanılmasını gerektiren ve https üzerinden sunulmayan tüm siteleri doğrudan etkileyeceği için önemli bir konudur ancak web'deki tüm kullanıcılar için yararlı olacağına inanıyoruz. Bu gönderi, gerekçeyi ve nasıl ilerleyeceğinizi anlamanıza yardımcı olacaktır.

Bu değişiklik ne zaman yapılacak?

Bu değişiklik, Chrome 50'den (20 Nisan 2016, 12:00 (PST)) itibaren geçerlidir.

Chrome'un geliştirici araçları konsolu, 44 sürümünden (21 Temmuz 2015'te yayınlandı) beri uyarılar veriyor.
Bu değişikliği neden yaptığımızın gerekçesini (ve tartışmasını) açıklayan birkaç herkese açık duyuru yaptık:

Bu konuyu vurgulayan başka kaynaklar da vardır: Mobiforge (26 Ocak 2016), Wired (17 Mart 2016), VentureBeat (13 Nisan 2016).

Bu değişikliği neden yapıyoruz?

Konum hassas veridir. Kullanıcılarınızın konum verilerinin gizliliğini korumak için HTTPS'yi zorunlu kılmak gerekir. Kullanıcının konumu güvenli olmayan bir bağlamda kullanılabilirse ağdaki saldırganlar söz konusu kullanıcının nerede olduğunu öğrenebilir. Bu durum, kullanıcı gizliliğini ciddi şekilde tehlikeye atar.

Bu kimleri etkiliyor?

Bu durum, şu anda HTTP üzerinden sunulan sayfalardan (güvenli olmayan) Coğrafi Konum API'sini kullanan tüm sayfaları etkiler. Ayrıca, HTTP sayfalarına yerleştirilmişse Coğrafi Konum API'sini kullanan HTTPS iFrame'lerini de etkiler. (Paylaşılan HTTPS ile yayınlanan bir çerçeve kullanarak polyfill yapamazsınız.)

Web uygulamamın tamamının HTTPS'ye ihtiyacı var mı?

Coğrafi konum bilgisinin kullanılabilmesi için uygulamanın tamamının HTTPS üzerinden sunulması zorunludur. Yalnızca coğrafi konumu kullanan sayfaların güvenli bir bağlamda yayınlanması gerekir. Şu anda güvenli bağlam, HTTPS veya localhost'te üst düzeyde barındırılan her şeydir. Örneğin, güvenli bir kaynağı işaret eden ancak güvenli olmayan bir kaynakta (http ://paul.kinlan.me/) barındırılan bir iframe'in coğrafi konum API'sini çağırmasına izin verilmez.

Yeni ve mevcut güçlü tarayıcı özellikleri güvenli kaynak gerektirdiğinden HTTPS'ye geçiş yapmanızı önemle tavsiye ederiz.

Bu durum yerel gelişimi etkiler mi?

Etkilemez. localhost, spesifikasyonda "potansiyel olarak güvenli" olarak tanımlanmıştır ve bizim durumumuzda localhost üzerinden üst düzeyde sunulan coğrafi konum istekleri yine de çalışır.

Coğrafi konumun güvenli bir bağlamda olmadığı için engellenip engellenmediğini çalışma zamanında algılayabilir miyim?

Evet. Coğrafi konum özelliği, Coğrafi Konum API'lerinin hata geri çağırma işlevine iletilen bir PositionError nesnesi tanımlar. Nesne, code ve message özelliklerini tanımlar.

Bu güvenli bağlam sorunu nedeniyle oluşan hatalar, "İzin Reddedildi Hatası" olan 1 değerinde bir code döndürür. Bir kullanıcı erişim izni vermediğinde veya sistem kullanıcının konumlarına erişimi reddettiğinde bu hatayı alabilirsiniz. Bu nedenle, tam nedeni görmek için mesajı kontrol etmeniz gerekir.

Bu durum gelecekte değişebileceğinden oldukça hassas olabilir. Ancak "Yalnızca güvenli kaynaklara izin verilir" dizesini aramak, güvenli olmayan bir içerik sorunu olduğunun güçlü bir göstergesidir.

navigator.geolocation.getCurrentPosition(success => {
    /* Do some magic. */
}, failure => {
    if (failure.message.startsWith("Only secure origins are allowed")) {
    // Secure Origin issue.
    }
});

Sayfanız https'de olsa da güvenli olmayan bir bağlamda barındırılan bir iframe içinde olabileceğinden, yalnızca sayfanın kaynağını kontrol edemeyeceğinizi unutmayın.

Coğrafi konumu kullanmam gerekiyor. Ne yapmalıyım?

HTML5 Geolocation API'yi kullanmak istiyorsanız veya siteniz zaten Geolocation API'yi kullanıyorsa lütfen Geolocation API çağrısı yapan sayfaları HTTPS'ye taşıyın. Bu sayfaların güvenli bir bağlamda kullanılmasını sağlayın.

Kullanıcının konumunu almak için bu değişiklikten etkilenmeyen çeşitli yedek seçenekler vardır. Örneğin, Google Haritalar Coğrafi Konum API'si, GeoIP (coğrafi konuma dayalı başka çözümler de vardır) ve kullanıcı tarafından girilen posta kodu. Ancak coğrafi konuma sürekli erişim sağlamanın en iyi yolunun HTTPS'ye geçmek olduğunu önemle tavsiye ederiz.