Frage

Ich bin mir ziemlich sicher, dass die Antwort auf das, was ich fragen werde, nein ist, aber vielleicht kann mir jemand eine andere Idee geben, also frage ich trotzdem.

Ich entwickle ein Bedienfeld, das Informationen zum Bild von Drittanbietern über einen API -Anruf bildet. Ich könnte einen Anruf mit AJAX tätigen, der das Ergebnis in Millisekunden im Browser zurückgibt, aber ich würde den API -Schlüssel dieses Dienstes aufdecken. Obwohl dies ein Intranet mit eingeschränktem Zugang ist, könnte ein Mitarbeiter herumschnüffeln und den privaten API -Schlüssel zum Beispiel nur das Aktivitätsfenster von Safari beobachten. Die Mitarbeiter sind vertrauenswürdig, aber ich möchte meine Entwicklungssicherheit nicht nur für das Vertrauen riskieren.

Was ich jetzt tue, ist, einen PHP zu erreichen, der den Anruf mit einem Curl -Anruf tätigt, aber es dauert ungefähr 2 oder 3 Sekunden, dies zu tun: nicht das PHP selbst, das gemeinsame Hosting, der zum Drittanbieter -Server und zurück geht.

Gibt es eine Möglichkeit, den Browser direkt an die API zu fordern, ohne den privaten Schlüssel freizulegen? Ich denke, dass es per Definition unmöglich ist, aber ich teile das Szenario, also hat vielleicht jemand eine bessere Idee (ich versuche, Cache zu vermeiden, weil die Informationen sich in der zweiten Änderung abrufen).

Nicht das Problem, ich habe einen Zweifel, den ich im Zusammenhang mit dem API -Aufruf über Curl auf Mac OS -Terminal oder in einem lokalen Apache mache, dauert jedes Mal 12 Sekunden, um das Ergebnis zu erzielen, aber einen Browser in genau demselben Computer und Verbindungen bekommt es in Millisekunden. Ich bin nicht sehr vertraut damit, wie Curl intern funktioniert, aber entweder Curl ist ein langsamer Mechanismus oder funktioniert in meinem Mac nicht gut.

Vielen Dank

War es hilfreich?

Lösung

Nein, da der JavaScript -Code auf die Maschine des Clients gesendet und ausgeführt wird, gibt es keine Möglichkeit, die API -Schlüssel nicht in irgendeiner Weise aufzudecken. Verschlüsseln/verschleiern Sie es wäre sinnlos, da ein sachkundiger Benutzer nur einen Header -Viewer/Paket -Sniffer verwenden könnte, um den Klartextschlüssel sowieso aus den API -Anfragen zu extrahieren.

Die einzige Möglichkeit, den Schlüssel nicht dem Benutzer auszusetzen, besteht darin, dass der Benutzer ihn jemals erholt, was bedeutet, dass die Anfragen stellt.

Andere Tipps

Nein, wenn der Browser den Dienst anfordert, kann der Benutzer immer den Schlüssel schnüffeln. PHP als Proxy zu verwenden, ist also eine gute Lösung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top