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.
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.
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.
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.
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.