web-dev-qa-db-fra.com

Comment pousser du code vers Github en cachant les clés API?

Je veux envoyer des codes dans mon référentiel GitHub. Ces codes sont dans différentes langues comme Javascript, Java, Python etc. Certains de ces codes contiennent une clé privée API que je ne veux pas publier.

Existe-t-il un moyen de masquer automatiquement les clés.? Dois-je le supprimer manuellement de mon code.?

Il y a de nombreux projets que je veux pousser vers GitHub. La suppression manuelle n'est donc pas une bonne option.

27
Sreeram TP

Vous devriez envisager d'utiliser .env fichiers et lire les clés des variables d'environnement. La procédure dépend du langage et des outils que vous utilisez (pour node.js , php , etc.).

Vous pouvez exclure .env fichier des validations en ajoutant .env au .gitignore. Vous pouvez également télécharger un exemple de configuration .env.example avec des données fictives ou des blancs pour montrer le schéma requis par votre application.

16

Chaque fois que vous avez des fichiers avec des données sensibles comme

config.yml

vous NE DEVEZ PAS les valider dans votre référentiel. Je vais vous montrer un exemple.

Supposons que vous ayez un fichier yaml avec un nom d'utilisateur et un mot de passe:

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

Si vous souhaitez masquer les valeurs foo et bar, supprimez ce fichier de votre référentiel, mais ajoutez simplement un fichier distribution qui vise à conserver les champs de nom d'utilisateur et de mot de passe, mais sans valeurs réelles:

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

Pendant l'installation, vous pouvez obtenir ce fichier en copiant app/config/credentials.yml.dist à app/config/credentials.yml.

N'oubliez pas non plus d'ajouter app/config/credentials.yml à ton .gitignore fichier.

C'est la même chose pour les touches api:

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

Cela fonctionne pour les fichiers de configuration, et c'est un bon modèle qui vous enregistre chaque fois que vous avez besoin de partager la structure d'une configuration mais pas de données sensibles. Fichiers Ini, configurations, etc.

8
sensorario

De toute façon, avoir votre clé API dans le code est une mauvaise idée. Cela signifie que toute autre personne qui souhaite utiliser votre code devra modifier le code et le reconstruire.

La solution de manuel pour ces cas d'utilisation consiste à déplacer les informations d'identification vers un fichier de configuration et à ajouter une documentation claire dans le README.md fichier sur la structure et l'emplacement du fichier de configuration. Vous pouvez également ajouter une entrée pour celui-ci dans votre fichier gitignore pour vous empêcher (ainsi que quiconque) de pousser vos informations privées vers GitHub par erreur.

7
Mureinik

Vous pouvez ajouter variables d'environnement sur votre serveur pour masquer vos clés API. Tous les langages de programmation populaires ont des méthodes par défaut pour évaluer les variables d'environnement.

5
Gautam Krishna R