Langkah apa yang harus saya ambil untuk melindungi Kunci API Google Maps saya?

98

Saya telah memperoleh kunci Google Maps API untuk domain saya.

Contoh yang diberikan ketika saya mendapatkan kunci saya menunjukkan kunci yang disematkan dalam parameter permintaan, misalnya:

<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>

Saya menghargai bahwa bidang perujuk dalam permintaan harus sesuai dengan domain saya, apakah aman untuk membuat kunci saya terlihat di tag skrip dan sejenisnya? Atau apakah ada langkah lain yang harus saya ambil?

brabster
sumber

Jawaban:

92

Mengingat kunci tersebut harus disertakan dalam <script>tag halaman HTML Anda, untuk memuat file / data JS dari server Google, tidak ada yang dapat Anda lakukan:

  • Anda harus memasukkannya ke dalam file HTML Anda
  • setiap orang bisa melihatnya.

Namun, itu tidak terlalu penting: jika ada yang mencoba menggunakan kunci ini di domain lain selain domain Anda, mereka akan mendapatkan peringatan Javascript - yang tidak baik untuk pengguna lain.

Jadi:

  • Tidak ada yang bisa kamu lakukan ; inilah cara kerjanya
  • Dan tidak banyak yang perlu Anda khawatirkan, menurut saya.
Pascal MARTIN
sumber
5
Saya pikir Anda dapat menggunakan proxy di situs Anda sendiri yang menggunakan kunci untuk mengambil file "asli". Benar-benar tidak ada gunanya, ya, tapi saya pikir itu mungkin.
Tim Sylvester
1
Kupikir itu layak untuk dicek kalau-kalau aku melewatkan sesuatu. Bersorak untuk mereka yang menjawab.
brabster
@Tim: tidak yakin; Saya menebak kode JS itu sendiri jika memeriksa nama domain situs yang menampilkan peta, dan tampaknya normal jika dibandingkan, dalam beberapa cara, dengan informasi yang disertakan dalam kunci - tetap saja, saya melakukannya tidak mencoba. ;;; @ Brabster: :-)
Pascal MARTIN
2
Misalnya penting jika kita ingin melindungi penggunaan bandwith dari kunci API kita. Periksa solusi saya.
Ifan Iqbal
3
dan bagaimana jika saya menggunakan kunci api untuk digunakan di aplikasi saya sendiri (windows / ios / android)? saya dapat mensimulasikan pengarah dan menggunakan kunci ini untuk tujuan saya sendiri dengan biaya Anda!
loki
22

Terdapat setelan di konsol Google API yang dapat melindungi penggunaan bandwith API Anda agar tidak digunakan oleh domain / pengguna lain. Anda dapat membatasi dan melindungi itu dengan menggunakan perujuk di konsol API. Kunci API akan menolak permintaan tanpa perujuk yang cocok dengan batasan Anda.

Berikut adalah screenshot dari Google untuk API Key yang hanya dapat digunakan oleh Google dari dua domainnya. masukkan deskripsi gambar di sini

Ifan Iqbal
sumber
3
bagaimana dengan pengguna seluler?
Muhammad Umer
Untuk menambahkan sedikit, detailnya dapat dilihat di sini developers.google.com/maps/…
SIslam
15

Meskipun pertanyaan ini berumur beberapa tahun, itu pertanyaan yang sangat bagus. Seperti yang saya pahami, mengekspos kunci API, meskipun cocok dengan domain, masih dapat menyebabkan penyalahgunaan. Ada pos di Security Stack Exchange di sini yang membahas ini lebih detail.

Langkah-langkah yang dapat Anda ambil untuk menghindari kemungkinan penyalahgunaan telah dipublikasikan oleh Google di sini:

Panduan Praktik Terbaik untuk menggunakan API dengan aman: https://support.google.com/cloud/answer/6310037?hl=id

Meskipun saya akan merekomendasikan untuk mengambil semuanya, ada pendekatan yang akan menangani contoh spesifik yang telah diposting oleh Brabster dan itu untuk menyimpan kunci dalam variabel lingkungan . Dengan cara ini yang perlu Anda lakukan adalah mengganti kunci untuk variabel sisi server yang disimpan dalam proyek Anda. Namun, pastikan untuk tidak memasukkan file yang menyimpan kunci ke repositori publik.

rjbultitude.dll
sumber
16
Saya juga merasa bahwa jawaban ini tidak menjawab pertanyaan tersebut. Maps API membutuhkan javascript sisi browser, yang selalu dapat dibaca oleh siapa saja yang mengambil halaman.
david van
-1

Anda harus menggunakan back end / sisi server untuk melindungi dan menangani kunci. Dalam kasus saya, saya menggunakan sisi server Django f / w yang dapat melayani panggilan ajax untuk mendapatkan kunci dari skrip server / db kemudian meneruskannya ke api google.

SKS
sumber
5
Jika kunci API Anda sampai di browser, itu bisa diambil oleh pihak ketiga.
Moose on the Loose