Ich arbeite an einer Open-Source-Javascript-Anwendung Ich versuche, mit einer API von Drittanbietern (Github speziell) zu interagieren. Ich versuche, meine gesamte Anwendung nur auf der Client-Seite zu halten, so dass ich wirklich keinen Server habe, auf den ich zurückgreifen könnte, um versteckte Dateien zu speichern. Als Teil des OAuth-Prozesses muss ich den geheimen Schlüssel bereitstellen, der für meinen API-Schlüssel bereitgestellt wird. Ich soll diesen Schlüssel nicht veröffentlichen oder teilen.Ausblenden geheimer Schlüssel im öffentlichen Repository
Ich habe mit folgenden Lösung gekommen:
- Verschlüsseln des geheime Schlüssel Triple-DEN und mit einem Passwort.
- Legen Sie die verschlüsselte Version irgendwo in mein Repository.
- Wenn ich über Oauth authentifizieren muss, zur Eingabe der Passphrase auffordern und den geheimen Schlüssel wiederherstellen.
- Sobald bekannt, speichern Sie das Geheimnis im lokalen Speicher, um zukünftige Eingabeaufforderungen zu vermeiden.
Ich speichere im Wesentlichen eine transformierte Version des geheimen Schlüssels. Ich denke, das alles kauft mich ist, dass ich die Passphrase vom Benutzer anstelle des vollen Schlüssels erhalten muss. Es sollte ein wenig leichter zu merken sein als zufällige Bytes.
Ist das sicher genug? Es ist keine überkritische App, aber ich möchte mein Bestes tun, um Dinge zu schützen, die ich nicht teilen soll. Gibt es einen besseren Weg als 3DES, den Schlüssel reversibel zu verschlüsseln?
Es stellt sich heraus, dass clientseitiges OAuth aus diesem Grund sowieso nicht von github unterstützt wird. Sie wollen nicht, dass geheime Schlüssel angezeigt werden. Könnte immer noch nützlich sein, wenn man mit weniger wählerischen Apis zu tun hat. – captncraig
Ich verstehe das Szenario nicht wirklich. Versuchen Sie, den Schlüssel von Benutzer github zu verbergen, obwohl sie den Client ausführen, der den Schlüssel verwendet? Wenn ja, kannst du es nicht sicher machen; Ein bestimmter Benutzer wird immer in der Lage sein, diesen Schlüssel wiederherzustellen, und aus ethischer Sicht sollten Sie nicht versuchen, auf einer Maschine gespeicherte Informationen vor seinem Besitzer zu verbergen. Wenn jeder Benutzer seinen eigenen GitHub-Schlüssel erhält und Sie nur nach einer bequemeren Möglichkeit suchen, sich daran zu erinnern, ist Ihre Lösung gut. – erickson