Wie verwende ich Google API-Schlüssel sicher?

77

Ich verwende also die Google Maps-API für mein erstes Projekt, das ich gerade mache. Ja, ich bin neu und es tut mir leid, wenn dies grundlegend oder offensichtlich ist, aber ich konnte keine klare Antwort oder Richtung finden. Unten finden Sie die Dokumentation, die ich von Google zur sicheren Verwendung des API-Schlüssels gefunden habe.


Best Practices für die sichere Verwendung von API-Schlüsseln

Wenn Sie API-Schlüssel in Ihren Anwendungen verwenden, achten Sie darauf, diese sicher zu halten. Das öffentliche Offenlegen Ihrer Anmeldeinformationen kann dazu führen, dass Ihr Konto kompromittiert wird, was zu unerwarteten Belastungen Ihres Kontos führen kann. Befolgen Sie die folgenden bewährten Methoden, um Ihre API-Schlüssel sicher zu halten:

Betten Sie API-Schlüssel nicht direkt in Code ein: API-Schlüssel, die in Code eingebettet sind, können versehentlich der Öffentlichkeit zugänglich gemacht werden. Wenn Sie beispielsweise vergessen, die Schlüssel aus dem von Ihnen freigegebenen Code zu entfernen. Speichern Sie Ihre API-Schlüssel nicht in Ihre Anwendungen, sondern in Umgebungsvariablen oder in Dateien außerhalb des Quellbaums Ihrer Anwendung. Speichern Sie API-Schlüssel nicht in Dateien im Quellbaum Ihrer Anwendung: Wenn Sie API-Schlüssel in Dateien speichern, behalten Sie die Dateien außerhalb des Quellbaums Ihrer Anwendung, um sicherzustellen, dass Ihre Schlüssel nicht in Ihrem Quellcodeverwaltungssystem landen. Dies ist besonders wichtig, wenn Sie ein öffentliches Quellcodeverwaltungssystem wie GitHub verwenden. Beschränken Sie die Verwendung Ihrer API-Schlüssel nur für die IP-Adressen, Referrer-URLs und mobilen Apps, die diese benötigen: Durch Einschränken der IP-Adressen, Referrer-URLs, Mit mobilen Apps, die jeden Schlüssel verwenden können, können Sie die Auswirkungen eines kompromittierten API-Schlüssels verringern. Sie können die Hosts und Apps angeben, die jeden Schlüssel in der Konsole verwenden können, indem Sie die Seite Anmeldeinformationen öffnen und dann entweder einen neuen API-Schlüssel mit den gewünschten Einstellungen erstellen oder die Einstellungen eines API-Schlüssels bearbeiten. Nicht benötigte API-Schlüssel löschen: Um die Gefahr von Angriffen zu minimieren, löschen Sie alle nicht mehr benötigten API-Schlüssel. Generieren Sie Ihre API-Schlüssel regelmäßig neu: Sie können API-Schlüssel auf der Seite Anmeldeinformationen der Cloud Platform Console neu generieren, indem Sie für jeden Schlüssel auf Schlüssel neu generieren klicken. Aktualisieren Sie anschließend Ihre Anwendungen, um die neu generierten Schlüssel zu verwenden. Ihre alten Schlüssel funktionieren 24 Stunden lang weiter, nachdem Sie Ersatzschlüssel generiert haben. Überprüfen Sie Ihren Code, bevor Sie ihn öffentlich veröffentlichen:


Jetzt ist mein Problem, dass ich nicht herausfinden kann, wie ich die Google Map in meine Website integrieren kann, ohne sie direkt in den Code einzufügen. Im Moment befindet sich meine API in meiner index.html wie folgt:

<script async defer
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
</script>

Aber auch dies steht direkt in meinem Code, damit die Welt sieht, was meiner Meinung nach der falsche Weg ist.

Jack O.
quelle

Antworten:

71

Für die Google Maps JavaScript API v3 die Schlüssel müssen auf Sie Seite öffentlich. Der zutreffende Text lautet:

Beschränken Sie die Verwendung Ihrer API-Schlüssel nur für die IP-Adressen, Referrer-URLs und mobilen Apps , die diese benötigen

Rufen Sie die Google API-Konsole auf, generieren Sie einen Schlüssel und beschränken Sie ihn auf URLs, die Sie besitzen (oder auf die Sie Karten setzen möchten), um Kontingentdiebstahl zu verhindern.

Geocodezip
quelle
21
Die Beschränkung auf URL ist nicht sicher, da der http-Verweis leicht gefälscht werden kann
Danny Ocean,
@Danny Ocean, Wenn die Beschränkung auf eine URL nicht sicher ist (da der http-Verweis gefälscht werden kann oder jemand Ihren API-Schlüssel auf seiner Box ausführen kann, wobei die Hosts-Datei Ihre URL auf den lokalen Host-Server verweist), ist dies am besten für die Sicherung geeignet Google API-Schlüssel wie Javascript Google Maps API, die den API-Schlüssel dem Client / Endbenutzer zur Verfügung stellen (anstelle eines versteckten serverseitigen API-Schlüssels)? Ich glaube nicht, dass ich andere Möglichkeiten gesehen habe, den Schlüssel in der Google Dev Console einzuschränken (nach IP, aber das würde für clientseitige API-Schlüssel nicht funktionieren, da Endbenutzer unterschiedliche IPs für eine öffentliche Website haben).
Armyofda12mnkeys
1
@ armeofda12mnkeys Als ich dieses Thema recherchierte, war der einzige sichere Weg, dies zu tun (mit sicher meine ich, dass es unmöglich ist, den API-Schlüssel zu stehlen), ein Reverse-Proxy. Leider würde es bei Verwendung von Google JS SDK nicht wirklich funktionieren. Sie können das SDK abrufen, ohne den API-Schlüssel verfügbar zu machen. Sobald das SDK jedoch auf den Client heruntergeladen wurde, werden mithilfe Ihres API-Schlüssels Anforderungen gestellt, die beispielsweise über Browser-Entwicklertools leicht beobachtet werden können. Wenn Sie jedoch die REST-API anstelle des SDK verwenden, können Sie diese Anforderungen als Proxy verwenden, ohne den API-Schlüssel verfügbar zu machen. Ich bin mir jedoch nicht sicher, ob Google die entsprechende REST-API bereitstellt.
Danny Ocean
18

Der Artikel mit den Best Practices für API-Schlüssel, auf den Sie verweisen, enthält nur allgemeine Richtlinien für die Verwendung von API-Schlüsseln. Bei bestimmten APIs für Endbenutzer, z. B. der Google Maps JavaScript-API, können Sie nicht vermeiden, den API-Schlüssel dem Endbenutzer zur Verfügung zu stellen.

In einer öffentlichen Maps-JavaScript-API-App wird daher dringend empfohlen, jedem in einem Produktionssystem verwendeten Schlüssel, insbesondere öffentlich zugänglichen, eine Verweisbeschränkung hinzuzufügen und nur die Domain-, Host- oder sogar die vollständige Datei-URL Ihrer App zu autorisieren.

Wenn Sie Ihren Schlüssel in der erstellen Google API-Konsole und die Einrichtungsnachweise für die Maps-JavaScript-API auswählen, werden Sie vom Assistenten zum Sichern des Schlüssels angewiesen und zur Eingabe von URLs aufgefordert, die Sie autorisieren möchten.

Ville N.
quelle