Sfondo
So che non dovremmo memorizzare le password in variabili String in Java / .Net (Dovrebbero essere memorizzate in oggetti mutabili come gli array di caratteri). E quando si tratta di aspetti dell'interfaccia utente, disponiamo di widget di campo password e metodi sicuri come getPassword e oggetti SecureString.
Problema 1
Quando si tratta di applicazioni console (Java), si passava agli argomenti del comando come una stringa array. Quindi, quando abbiamo bisogno di inserire una password nel programma, dobbiamo infrangere la nostra regola fondamentale con le stringhe. Come possiamo proteggere questo scenario?
Problema 2
Sto lavorando in un'applicazione Java Spring MVC (REST) e ho bisogno di passare una serie di password all'avvio del servizio. Di seguito è riportato il metodo che sto usando ora per queste iniezioni.
@Value("${Password1}")
private String pwd1;
@Value("${Password2}")
private String pwd2;
E quando avvierò il mio servizio, dovrò inserire la mia password come segue usando le proprietà di gradlew e vanilla spring.
gradlew bootrun -DPassword1=!@# -DPassword2=$%$
Come posso proteggere queste password?