2017-06-03 3 views
7

Ich möchte etwas Code zu GitHub schieben. Es enthält einige private API-Schlüssel, die ich nicht veröffentlichen möchte. Gibt es eine Möglichkeit, es automatisch zu verstecken? Soll ich es manuell aus meinem Code entfernen?Wie Push-Code zu Github die API-Schlüssel versteckt?

+2

Niemals etwas festlegen, das Informationen enthält, die andere nicht sehen sollen. –

Antwort

6

Sie sollten .env Dateien verwenden und die Schlüssel aus den Umgebungsvariablen lesen. Wie das geht, hängt von der Sprache und den Werkzeugen ab, die Sie verwenden (für node.js, php usw.).

Sie können die Datei .env von den Commits ausschließen, indem Sie .env zu .gitignore hinzufügen. Sie können auch eine Beispielkonfiguration .env.example mit Dummy-Daten oder Leerzeichen hochladen, um das von Ihrer Anwendung benötigte Schema anzuzeigen.

5

Wenn Sie Ihren API-Schlüssel im Code haben, ist das wahrscheinlich eine schlechte Idee. Es bedeutet, dass jeder, der Ihren Code verwenden möchte, den Code bearbeiten und neu erstellen muss.

Die Lehrbuchlösung für solche Anwendungsfälle besteht darin, die Anmeldeinformationen in eine Konfigurationsdatei zu verschieben und eine klare Dokumentation in der Datei README.md über die Struktur und den Speicherort der Konfigurationsdatei hinzuzufügen. Sie können auch einen Eintrag dafür in Ihrer Datei gitignore hinzufügen, um zu verhindern, dass Sie (und alle anderen) versehentlich Ihre privaten Informationen zu GitHub übertragen.

2

Sie können enviornment variables auf Ihrem Server hinzufügen, um Ihre API-Schlüssel auszublenden. Alle gängigen Programmiersprachen verfügen standardmäßig über Methoden zum Zugriff auf die Umgebungsvariablen.

3

Jedes Mal, wenn Dateien mit sensiblen Daten haben wie

config.yml 

dürfen Sie sie in Ihrem Repository begehen. Ich werde dir ein Beispiel zeigen.

Angenommen, eine YAML-Datei mit einigen Benutzernamen und ein Passwort haben:

# app/config/credentials.yml 
credentials: 
    username: foo 
    password: bar 

Wenn Sie die foo und die bar values, remove this file from your repository, but add just a distribution` Datei ausblenden möchten, die Felder Benutzername und Passwort erhalten soll, aber ohne reale Werte:

# app/config/credentials.yml.dist 
credentials: 
    username: ~ 
    password: ~ 

Während der Installation können Sie diese Datei, app/config/credentials.yml.dist zu app/config/credentials.yml bekommen zu kopieren.

Denken Sie auch daran, app/config/credentials.yml zu Ihrer .gitignore Datei hinzuzufügen.

Sein das gleiche für api Schlüssel:

# app/config/config.yml 
config: 
    credentials: 
     username: foo 
     password: bar 
    api_stuffs: 
     api_foo: fooooo 
     api_secret: baaaaar 
     api_token: tooooken 

Dies funktioniert für Konfigurationsdateien und ist ein gutes Muster, die Sie spart jedes Mal, müssen Sie die Struktur einer Konfiguration teilen, aber nicht sinnvoll, Daten. Ini-Dateien, Konfigurationen und so weiter.

+0

Vielen Dank für die Informationen. :) –

+0

Bitte erklären Sie downvote O_o – sensorario

Verwandte Themen