2010-07-05 6 views
42

Sto lavorando su un piccolo side-project e sto usando stringhe di connessione e anche chiavi e valori api che non dovrebbero essere visti o usati da altre persone. Io uso un account GitHub pubblico per il controllo del codice sorgente. Qual è il metodo usuale per utilizzare il controllo del codice sorgente quando questi valori sono in testo semplice in web.config?Come nascondere stringa di connessione, nome utente, pw quando si utilizza il controllo del codice sorgente?

Devo rimuovere manualmente i valori prima del codice di accesso?

+1

io di solito basta rimuoverlo prima del check-in, ma che è er a rischio, e scomodo. Mi piacerebbe anche sentire alcune idee su questo. –

risposta

31

Manteniamo la configurazione sensibili e/o specifiche della macchina in file di configurazione separati, quindi utilizzare configSource di includerli in questo modo ...

<connectionStrings configSource="cstrings.config"/> 

In questo modo è possibile controllare in web.config e un CStrings. file di configurazione che ha un valore generico che può essere utilizzato su una macchina di sviluppo. (Ad esempio, (locale), ... MyAppNameDb ...)

per ambienti di produzione, contrassegnare il file cstrings.config in sola lettura e impostare lo script di distribuzione in modo che non si tenta di scrivere su di esso . La stringa di connessione di produzione è protetta da qualunque sicurezza tu abbia su quella scatola. Ciò mantiene le tue stringhe sensibili fuori dal controllo della versione.

cstrings.config:

<?xml version="1.0" encoding="utf-8" ?> 
<connectionStrings> 
    <add name="Default" connectionString="Server=localhost"/> 
</connectionStrings> 
+0

Semplice e funziona come un fascino. Grazie! –

4

È possibile controllare in un file, come config.sample che contiene valori fittizi. Ogni sviluppatore quindi copierà quel file per configurare e modificare i propri valori. Dovresti quindi inserire questo file locale in .gitignore.

+1

gitignore non funziona su file già tracciati. – nathanchere

58

Quello che trovo opere è quello di verificare in una versione del file con i valori tranciate o fittizi e poi a correre:

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

Git si fermerà il monitoraggio delle modifiche a tale file che consente di mettere il vero config . informazioni in esso senza paura di controllare in

Se successivamente si apportano modifiche che si desidera utilizzare il check-in è possibile eseguire:

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

spot on! questo è quello che stavo cercando. niente soluzioni alternative, funziona! – kroe

+1

Molto utile! Ho combinato questo approccio con l'altra soluzione (configSource) per nascondere solo le stringhe di connessione ma consentire modifiche di configurazione semplici. – fabsenet

+1

questo approccio ripristina il contenuto del file se usi git stash e git stash pop :( – fabsenet