Mantenere le password al di fuori del codice sorgente

5

I segreti non dovrebbero essere nel codice sorgente e nel controllo della versione a causa di due motivi:

  • Minaccia esterna : un utente malintenzionato può sfruttare una vulnerabilità per ottenere l'accesso a file / origine del tuo sito web / applicazione. Ad esempio sfruttando la vulnerabilità della directory traversal o del download di file arbitrari. Un simile attacco non dovrebbe portare alla fuga di segreti.

  • Rischio interno : uno sviluppatore che copia / distribuisce il codice sorgente in modo malevolo. Comprensibilmente, ci deve essere un piccolo sottogruppo di persone che hanno bisogno di conoscere questi segreti, quello che stiamo cercando di evitare qui è di avere i segreti visibili a tutti gli sviluppatori dell'organizzazione che hanno accesso al sistema di controllo della versione.

Le variabili di ambiente sono una soluzione usuale. Tuttavia, se anche gli script di compilazione sono versionati, cambiamo semplicemente la posizione dei segreti dal codice sorgente al rispettivo script hudson / jenkins / capistrano.

Quali sono le migliori pratiche per mantenere le password al di fuori del codice sorgente?

    
posta Naya Bonbo 21.10.2015 - 23:10
fonte

2 risposte

4

Posso pensare a un paio di opzioni che possono essere d'aiuto.

1) Conserva il file di configurazione sui server live e fai in modo che il processo di creazione lo copi nella nuova cartella di distribuzione. Finché limiti l'accesso al live box, ti allontani da chiunque abbia accesso.

2) Criptare le password e avere le chiavi di decrittografia attive sul server. chiunque non abbia accesso alla casella non può decodificare il file.

3) Utilizza RSA, assegna al server una chiave privata e memorizza la chiave pubblica nel database dell'app. La chiave pubblica crittografa il file della password, l'app prende la chiave privata del server e la utilizza per la decrittografia. In questo modo, chiunque può avere il file di configurazione e chiunque abbia accesso al DB può crearne uno. Solo le persone con accesso all'archivio certificati sul server possono accedere alla chiave di decrittografia. Puoi aggiungere la firma se lo desideri.

È possibile conservare copie delle chiavi / password da qualche parte con accesso limitato nel caso in cui sia necessario recuperarle.

    
risposta data 22.10.2015 - 09:20
fonte
2

Se hai bisogno di nasconderli, puoi semplicemente spostarli in un file separato (un file di configurazione o qualcosa) che puoi aggiungere a te .gitignore o equivalente. È possibile fornire un secondo file campione non hiden che mostrerà all'utente come inserire le proprie password o chiavi.

    
risposta data 21.10.2015 - 23:40
fonte

Leggi altre domande sui tag