2016-03-20 15 views
1

Ich erstelle eine Electron-Anwendung, die Google YouTube Data API v3 verwendet. Für den Zugriff auf die API entschied ich mich, den Standard-API-Schlüssel zu verwenden (anstelle von OAuth, da ich nicht auf persönliche Daten zugreifen werde).Wie blende ich den API-Schlüssel in meiner Electron-Anwendung?

Aber das Problem ist, kann ich nicht den API-Schlüssel in meiner App verstecken, und ich kann auch keine Referrer Einschränkungen (Referrer Einschränkungen können Sie filtern, welche Websites können Ihren API-Schlüssel (per HTTP-Adresse)) verwenden, da dies ist eine Electron-App. Wenn also jemand den Quellcode (oder sogar nur die Entwicklerwerkzeuge) betrachtet, kann er den Schlüssel sehen und frei verwenden.

Irgendwelche Ratschläge, was zu tun ist? Vielen Dank.

+0

Benötigt Ihre App eine Benutzeranmeldung? –

+0

@AaronFranco Nr. (Verwendet nicht OAuth, nur die API-Taste) –

+0

Ich meine auf Ihre App zugreifen, müssen Benutzer ein Konto mit Ihrer App erstellen, nicht YouTube –

Antwort

4

Die einzige Möglichkeit, Ihren API-Schlüssel für eine Anwendung zu sichern, bei der Benutzer sich nicht registrieren oder anmelden müssen, besteht darin, sie hinter einen Server-Proxy zu stellen. Wenn die App gestartet wird, greift die App auf Ihren Server zu. Der Server gibt dann den API-Schlüssel zurück, sodass er nur in der App in dynamischer Form vorhanden ist und für Benutzer nicht sichtbar ist.

Dies ist jedoch immer noch unsicher, wenn sie einen Paket-Sniffer oder lokalen Proxy verwenden, können sie Ihr Token greifen.

Die sicherste Möglichkeit besteht darin, alle API-Anfragen von einem privaten Server zu stellen, auf den Ihre App Zugriff hat. Also, die App macht keine Anfragen an Youtube, es bekommt nur die Daten von Ihrem Server.

Anschließend können Sie Ihre App sichern, indem Sie mit einem privaten Schlüssel API-Anforderungen an Ihren privaten Server signieren. Zum Beispiel könnten Sie in der App eine Konfigurationsdatei mit einem privaten Schlüssel haben, der in der Kopfzeile jeder API-Anfrage gesendet wird. Dann wäre es nur möglich, Ihre App zu dekompilieren und dann auf diese Konfigurationsdatei zuzugreifen und dann API-Anfragen an Ihren privaten Server unter Verwendung der gleichen privaten Informationen zu stellen. Um böswillige Benutzer zu verhindern, können Sie den Datenverkehr überwachen und Anforderungslimits festlegen, z. B. 1 Anfrage pro Sekunde pro App. Jede App, die diese Grenze überschreitet, kann als DDOS-Angriff oder böswilliger Benutzer in die schwarze Liste aufgenommen werden.

Der Datenfluss würde in etwa so aussehen.

App -> Server (with Api Key) -> youtube (data) -> Server (data) -> App 
+0

Danke! Ich werde bald einen PHP-Proxy-Server einrichten! –