Ausblenden-API-Schlüssel in JS-setup
Ich bin erstellen einer einfachen Benutzeroberfläche mit einem HTML+CSS+JS-setup, das verwendet eine Drittanbieter-API erfordert einen Schlüssel, und ich möchte zu halten Sie den Schlüssel in eine Datei, kann ich gitignore
und den Zugang aus meiner Javascript-Datei. Ich bin kein gehen, um sein Bereitstellung dieses Projekt, ich möchte einfach in der Lage, schieben Sie es auf GitHub, ohne vorübergehend löschen der Variablen vor jedem commit.
Alle Antworten, die ich gefunden habe, sind in Bezug auf setups mit Node.js Reagieren/Webpack, oder eine andere server-setups, aber ich habe keinen server oder transpiler und nicht möchten, fügen Sie ein paar Reste und die Konfigurationen nur für dieses. Gibt es eine Möglichkeit, das zu tun? Ich habe versucht, es zu speichern in einer separaten JS-Datei und importieren/exportieren, aber entweder konnte ich nicht, die syntax Recht oder das, was ich versucht hatte, Sie brauchte einen transpiler. Jeder Versuch, variation führte zu einem syntax-error oder undefined variable.
Wichtige Informationen:
- Dieses Projekt vollständig lokal--also, nur das öffnen
index.html
in meinem browser--also ich glaube nicht, dass ich befürchten muss, den Schlüssel bloßgestellt, die in den client. - Mein setup ziemlich genau umfasst
index.html
,main.js
, undstyle.css
. - Ich wollen, schieben Sie das Projekt auf GitHub, so möchte ich zum speichern der api-key als variable in einer Datei getrennt von
main.js
dass ich hinzufügen kann, um.gitignore
aber der Zugang inmain.js
. - Ich halte diese so einfach wie möglich, ohne Rahmen, etc. Es sei denn, es ist super einfach und leicht, ich will nicht hinzufügen, Bibliotheken, nur um mit diesem zu arbeiten.
- Was Serverlose-Anbieter verwenden Sie? AWS Lambda?
- Ich sollte nicht gesagt haben, serverlose in den ursprünglichen Titel. Ich meinte, dass buchstäblich, wie in "ich habe keine server." Kein backend beteiligt ist, nur index.html, Stile.css, main.js und es läuft durch die öffnung index.html in den browser. Ich konnte nicht herausfinden, wie die Konfiguration eines
.env
Datei ohne Knoten oder eine andere Art von transpiler. Ich denke, die Antwort ist entweder so basic, dass ich bin fehlt es oder ist es nicht möglich, etwas zu schaffen, was übermäßig entwickelt - Wenn das stimmt, dann bist du senden Sie Ihren API-Schlüssel auf der client ist und daher jeder mit Ihrer Anwendung haben, wenn Sie es wollen.
- Ich bin nicht bereitstellen, die es für jedermann zu benutzen, ich bin buchstäblich öffnen der lokalen index.html die Datei in meinem browser, so dass ich glaube nicht, dass ich Grund zur Sorge um die Sicherheit. Ich möchte öffentlich push das Projekt auf GitHub, obwohl, so will ich, um der Lage sein, um die Schlüssel in einer Datei, die ignoriert werden können, die von git.
- Aktualisierte Antwort basierend auf diesen neuen Informationen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre beste Wette ist, ziehen was auch immer Geheimnisse, die Sie benötigen, aus der Umgebung selbst, entweder Ihre Umgebungsvariablen oder Geheimnisse zu speichern.
Die konkrete Umsetzung wird davon abhängen, was die serverlose-provider Sie verwenden, aber zum Beispiel AWS Lambda können Sie konfigurieren, env vars:
https://docs.aws.amazon.com/lambda/latest/dg/env_variables.html
und man kann den Key Management Service oder Parameter Speichern, je nach Vorlieben und Anforderungen:
https://aws.amazon.com/blogs/mt/the-right-way-to-store-secrets-using-parameter-store/
Verlassen die oben, falls Leute finden diese über Blick auf die Serverlose tag. Updates hier auf der Grundlage der aktualisierten Frage.
So, wenn ich verstehe die Frage richtig aktualisiert, die Sie überprüfen möchten, in der Sie alle Ihre code zu git mit Ausnahme der API-key, dienen die Dateien nur auf dem lokalen Datei-system und haben die lokale Kopie der Zugriff auf den API-key.
Der einfachste Weg, dies zu tun wäre, nur ein anderes .js-Datei, die definiert, die variable(N) in Frage, etwa so:
Dann, in index.html habe ein weiteres script-tag, das fordert, dass vor der Skripte benötigen die config, z.B.:
In main.js Sie werden dann in der Lage sein, eine Referenz-variable
config
für den Einsatz, und Sie können entsprechend .gitignore 'config.js'.