Otrzymałem klucz API Map Google dla mojej domeny.
Przykłady podane, gdy otrzymałem mój klucz, pokazują klucz osadzony w parametrach żądania, na przykład:
<script src="http://maps.google.com/maps?file=api&v=2&sensor=true_or_false&key=my-key" type="text/javascript"></script>
Rozumiem, że pole strony odsyłającej w żądaniach musi być zgodne z moją domeną. Czy można bezpiecznie pokazać mój klucz w tagach skryptów i tym podobnych? Czy są jakieś inne kroki, które powinienem podjąć?
google-maps
brabster
źródło
źródło
W konsoli Google API jest ustawienie, które może chronić przepustowość Twojego interfejsu API przed użyciem przez inną domenę / użytkownika. Możesz to ograniczyć i zabezpieczyć, używając strony odsyłającej w konsoli API. Klucz API odrzuca żądania bez stron odsyłających, które pasują do twoich ograniczeń.
Oto zrzut ekranu z Google dla klucza API, który może być używany tylko przez Google z dwóch domen.
źródło
Chociaż to pytanie ma już kilka lat, jest bardzo dobre. Jak rozumiem, ujawnienie kluczy API, nawet jeśli są dopasowane do domeny, może nadal prowadzić do nadużyć. Jest tutaj post na Security Stack Exchange , który omawia to bardziej szczegółowo.
Kroki, które możesz podjąć, aby uniknąć potencjalnych nadużyć, zostały opublikowane przez Google tutaj:
Przewodnik po sprawdzonych metodach bezpiecznego korzystania z interfejsów API: https://support.google.com/cloud/answer/6310037?hl=en
Chociaż zalecałbym wzięcie tego wszystkiego na pokład, istnieje podejście, które poradzi sobie z konkretnym przykładem opublikowanym przez Brabstera, a jest nim przechowywanie klucza w zmiennej środowiskowej . W ten sposób wszystko, co musisz zrobić, to podstawić klucz do zmiennej po stronie serwera, która jest przechowywana w projekcie. Jednak pamiętaj, aby nie zatwierdzać pliku, który przechowuje klucz, w publicznym repozytorium.
źródło
Do ochrony i obsługi klucza należy używać zaplecza / strony serwera. W moim przypadku użyłem strony serwera Django f / w, która może obsłużyć wywołanie Ajax, aby uzyskać klucz ze skryptu serwera / db, a następnie przekazać go do Google API.
źródło