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?