Welche Schritte muss ich unternehmen, um meinen Google Maps-API-Schlüssel zu schützen?

94

Ich habe einen Google Maps-API-Schlüssel für meine Domain erhalten.

Die Beispiele, die bereitgestellt wurden, als ich meinen Schlüssel erhielt, zeigen den in Anforderungsparameter eingebetteten Schlüssel, zum Beispiel:

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

Ich schätze, dass das Referrer-Feld in Anfragen mit meiner Domain übereinstimmen muss. Ist es sicher, meinen Schlüssel in Skript-Tags und dergleichen sichtbar zu machen? Oder gibt es noch andere Schritte, die ich unternehmen sollte?

Brabster
quelle

Antworten:

90

Da dieser Schlüssel in den <script>Tags Ihrer HTML-Seiten enthalten sein muss, um die JS-Dateien / Daten von den Servern von Google zu laden, können Sie nichts tun:

  • Sie müssen es in Ihre HTML-Dateien einfügen
  • Jeder kann sich diese ansehen.

Trotzdem spielt es keine Rolle: Wenn jemand versucht, diesen Schlüssel auf einer anderen Domain als Ihrer zu verwenden, erhält er eine Javascript-Benachrichtigung - was für die Benutzer nicht gut ist.

So :

  • Sie können nichts tun. So funktioniert es
  • Und es gibt nicht viel, worüber Sie sich Sorgen machen sollten, würde ich sagen.
Pascal MARTIN
quelle
5
Ich denke, Sie könnten einen Proxy auf Ihrer eigenen Site verwenden, der den Schlüssel zum Abrufen der "echten" Datei verwendet. Völlig sinnlos, ja, aber ich denke es ist möglich.
Tim Sylvester
1
Ich dachte, es lohnt sich zu überprüfen, ob ich etwas verpasst habe. Prost an diejenigen, die geantwortet haben.
Brabster
@ Tim: nicht sicher; Ich vermute den JS-Code selbst, wenn ich den Domain-Namen der Site, auf der die Karte angezeigt wird, überprüfe, und es scheint normal, dass er auf irgendeine Weise mit den im Schlüssel enthaltenen Informationen verglichen wird - trotzdem habe ich es getan nicht versuchen. ;;; @Brabster ::-)
Pascal MARTIN
2
Es ist zum Beispiel wichtig, ob wir die Bandbreitennutzung unseres API-Schlüssels schützen möchten. Überprüfen Sie meine Lösung.
Ifan Iqbal
3
und was ist, wenn ich den API-Schlüssel zur Verwendung in meiner eigenen APP (Windows / iOS / Android) nehme? Ich kann den Referrer simulieren und diesen Schlüssel auf Ihre Kosten für meinen eigenen Zweck verwenden!
Loki
21

In der Google API-Konsole gibt es Einstellungen, die die Verwendung Ihrer API-Bandbreite vor der Verwendung durch eine andere Domain / einen anderen Benutzer schützen können. Sie können dies einschränken und schützen, indem Sie den Referrer in der API-Konsole verwenden. Der API-Schlüssel lehnt Anforderungen ohne Verweise ab, die Ihren Einschränkungen entsprechen.

Hier ist ein Screenshot von Google für API Key, der nur von Google für die beiden Domains verwendet werden kann. Geben Sie hier die Bildbeschreibung ein

Ifan Iqbal
quelle
3
Was ist mit mobilen Benutzern?
Muhammad Umer
Weitere
14

Obwohl diese Frage einige Jahre alt ist, ist sie sehr gut. Soweit ich weiß, kann das Offenlegen von API-Schlüsseln, selbst wenn sie mit der Domain übereinstimmen, immer noch zu Missbrauch führen. Hier gibt es einen Beitrag zu Security Stack Exchange , der dies ausführlicher behandelt.

Die Schritte, die Sie unternehmen können, um potenziellen Missbrauch zu vermeiden, wurden von Google hier veröffentlicht:

Best Practice-Handbuch für die sichere Verwendung von APIs: https://support.google.com/cloud/answer/6310037?hl=de

Obwohl ich empfehlen würde, alles an Bord zu nehmen, gibt es einen Ansatz, der sich mit dem spezifischen Beispiel befasst, das von Brabster veröffentlicht wurde, und der darin besteht, den Schlüssel in einer Umgebungsvariablen zu speichern . Auf diese Weise müssen Sie lediglich eine serverseitige Variable, die in Ihrem Projekt gespeichert ist, durch den Schlüssel ersetzen. Stellen Sie jedoch sicher, dass Sie die Datei, in der der Schlüssel gespeichert ist, nicht in ein öffentliches Repository übertragen.

rjbultitude
quelle
16
Ich habe auch das Gefühl, dass diese Antwort die Frage nicht anspricht. Die Karten-API erfordert browser-seitiges Javascript, das immer von jedem gelesen werden kann, der die Seite abruft.
David van Brink
-1

Sie sollten die Back-End- / Serverseite verwenden, um den Schlüssel zu schützen und zu handhaben. In meinem Fall habe ich die Django f / w-Serverseite verwendet, die einen Ajax-Aufruf ausführen kann, um den Schlüssel vom Serverskript / der Datenbank abzurufen und ihn dann an die Google-API weiterzuleiten.

SKS
quelle
4
Wenn Ihr API-Schlüssel jemals den Browser erreicht, kann er von einem Dritten abgerufen werden.
Elch auf dem losen