Comment masquer une chaîne de connexion, nom d’utilisateur, pw lors de l’utilisation du contrôle de source?

Je travaille sur un petit projet parallèle et j’utilise des chaînes de connexion ainsi que des clés et des valeurs d’API qui ne devraient pas être vues ou utilisées par d’autres personnes. J’utilise un compte public GitHub pour le contrôle des sources. Quelle est la méthode habituelle pour utiliser le contrôle de code source lorsque ces valeurs sont en texte brut dans web.config?

Dois-je supprimer les valeurs manuellement avant d’enregistrer le code?

Ce que je trouve fonctionne est d’enregistrer une version du fichier avec des valeurs masquées ou factices, puis de l’exécuter:

git update-index --assume-unchanged [fileName] 

Git cessera alors de surveiller les modifications apscopes à ce fichier, vous permettant d’y insérer les informations de configuration réelles sans crainte de les enregistrer.

Si vous apportez ultérieurement des modifications que vous souhaitez enregistrer, vous pouvez exécuter:

 git update-index --no-assume-unchanged [fileName] 

Nous conservons une configuration sensible et / ou spécifique à la machine dans des fichiers de configuration distincts, puis utilisons configSource pour les inclure comme suit …

  

De cette façon, vous pouvez vérifier Web.config et un fichier cssortingngs.config qui a une valeur générique pouvant être utilisée sur une machine de développement. (par exemple, (local), … MyAppNameDb …)

Pour les environnements de production, marquez le fichier cssortingngs.config en lecture seule et configurez votre script de déploiement afin de ne pas tenter de le remplacer. Votre chaîne de connexion de production est protégée par la sécurité que vous avez sur cette boîte. Cela garde vos chaînes sensibles hors du contrôle de version.

cssortingngs.config :

     

Vous pouvez archiver un fichier comme config.sample qui contient des valeurs factices. Chaque développeur copiera alors ce fichier pour le configurer et le modifier dans ses propres valeurs. Vous placeriez alors ce fichier local dans .gitignore.