Google Haritalar API Anahtarımı korumak için hangi adımları atmalıyım?


101

Etki alanım için bir Google Haritalar API anahtarı edindim.

Anahtarımı aldığımda sağlanan örnekler, istek parametrelerinde gömülü anahtarı gösterir, örneğin:

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true_or_false&amp;key=my-key" type="text/javascript"></script>

İsteklerdeki yönlendiren alanının alanımla eşleşmesi gerektiğini anlıyorum, anahtarımı komut dosyası etiketlerinde ve benzerlerinde görünür kılmak güvenli mi? Yoksa atmam gereken başka adımlar var mı?

Yanıtlar:


94

<script>JS dosyalarını / verilerini google sunucularından yüklemek için anahtarın HTML sayfalarınızın etiketlerine dahil edilmesi gerektiğini düşünürsek , yapabileceğiniz hiçbir şey yoktur:

  • HTML dosyalarınıza koymalısınız
  • herkes bunlara bir bakabilir.

Yine de, gerçekten önemli değil: Bu anahtarı sizinkinden başka bir alanda kullanmaya çalışan biri, bir Javascript uyarısı alacak - ki bu diğer kullanıcılar için hoş değil.

Yani :

  • Yapabileceğin hiçbir şey yok ; bu böyle çalışıyor
  • Ve endişelenmen gereken pek bir şey yok, diyorum.

5
Kendi sitenizde, "gerçek" dosyayı getirmek için anahtarı kullanan bir proxy kullanabilirsiniz. Tamamen anlamsız, evet, ama bence mümkün.
Tim Sylvester

1
Bir şeyi kaçırmış olsaydım diye kontrol etmeye değer olduğunu düşündüm. Cevap verenlere şerefe.
brabster

@Tim: emin değilim; Haritayı görüntüleyen sitenin alan adını kontrol ediyorsanız JS kodunun kendisini tahmin ediyorum ve onu bir şekilde anahtarda bulunan bir bilgiyle karşılaştırması normal görünüyor - yine de yaptım denemeyin. ;;; @Brabster: :-)
Pascal MARTIN

3
Örneğin, API anahtarımızın bant genişliği kullanımını korumak isteyip istemediğimiz önemlidir. Çözümümü kontrol edin.
Ifan Iqbal

3
ve kendi uygulamamda (windows / ios / android) kullanmak için api anahtarını alırsam ne olur? Yönlendireni simüle edebilir ve bu anahtarı kendi amacım için maliyetiniz karşılığında kullanabilirim!
loki

25

Google API konsolunda, API bant genişliği kullanımınızı başka bir etki alanı / kullanıcı tarafından kullanılmasını önleyebilecek bir ayar vardır. API konsolunda yönlendireni kullanarak bunu kısıtlayabilir ve koruyabilirsiniz. API Anahtarı, kısıtlamalarınızla eşleşen yönlendirenler olmadan istekleri reddeder.

Burada, yalnızca Google tarafından kullanılabilen API Anahtarı için Google'ın ekran görüntüsü iki etki alanı. görüntü açıklamasını buraya girin


3
peki ya mobil kullanıcılar?
Muhammad Umer

Biraz eklemek için, ayrıntılar burada geliştiriciler.google.com
maps/…

@MuhammadUmer Özellikle android uygulamalarıyla ilgilenmek için artık tuşlarda ayrı bir güvenlik ayarı var. Bir uygulama bu şekilde güvenli hale getirilmiş farklı bir anahtar kullanmalıdır. Mobil tarayıcı kullanıcıları, bu durumda masaüstü tarayıcı kullanıcıları ile aynı şekilde çalışacaktır. Cloud.google.com/docs/authentication/api-keys
sirlark'ı

15

Bu soru birkaç yıllık olmasına rağmen çok iyi bir soru. Anladığım kadarıyla API anahtarlarını açığa çıkarmak, alan adı eşleşseler bile yine de kötüye kullanıma yol açabilir. Burada, Güvenlik Yığını Değişimi hakkında bunu daha ayrıntılı olarak ele alan bir gönderi var .

Olası kötüye kullanımı önlemek için atabileceğiniz adımlar Google tarafından burada yayınlanmıştır:

API'leri güvenli bir şekilde kullanmak için En İyi Uygulama Kılavuzu: https://support.google.com/cloud/answer/6310037?hl=tr

Bunların hepsini gemiye almanızı tavsiye etmeme rağmen, Brabster tarafından yayınlanan ve anahtarı bir ortam değişkeninde depolayan belirli bir örnekle ilgilenecek bir yaklaşım var . Bu şekilde yapmanız gereken tek şey, projenizde depolanan bir sunucu tarafı değişkeni için anahtarı değiştirmek. Ancak, anahtarı depolayan dosyayı genel bir depoya kaydetmediğinizden emin olun.


18
Ayrıca bu cevabın soruyu yanıtlamadığını düşünüyorum. Maps API, sayfayı getiren herkes tarafından her zaman okunabilen tarayıcı tarafında javascript gerektirir.
david van brink

-1

Anahtarı korumak ve işlemek için arka uç / sunucu tarafını kullanmalısınız. Benim durumumda, anahtarı server script / db'den almak için bir ajax çağrısı yapabilen Django f / w sunucu tarafını kullandım ve ardından onu google api'ye ilettim.


6
API anahtarınız tarayıcıya ulaşırsa, üçüncü bir tarafça alınabilir.
Moose on the Loose
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.