Sto cercando il (1) modo più sicuro e (2) più semplice per avere un utente digitare una password su un prompt della shell bash e far sì che quella password diventi parte di stdin per un programma.
Ecco come deve apparire lo stdin:, {"username":"myname","password":"<my-password>"}
dove si <my-password>
trova ciò che è stato digitato nel prompt della shell. Se avessi il controllo del programma sullo stdin, allora potrei modificarlo per richiedere in modo sicuro una password e metterlo in posizione, ma il downstream è un comando standard generico.
Ho considerato e rifiutato approcci che utilizzano quanto segue:
- l'utente digitando la password nella riga di comando: la password sarebbe mostrata sullo schermo e sarebbe anche visibile a tutti gli utenti tramite "ps"
- interpolazione variabile shell in un argomento a un programma esterno (es.,
...$PASSWORD...
): la password sarebbe comunque visibile a tutti gli utenti tramite "ps" - variabili d'ambiente (se lasciate nell'ambiente): la password sarebbe visibile a tutti i processi figlio; anche processi affidabili potrebbero esporre la password se scaricano core o scaricano variabili di ambiente come parte di una diagnostica
- la password che si trova in un file per un lungo periodo di tempo, anche un file con permessi stretti: l'utente potrebbe esporre accidentalmente la password e l'utente root potrebbe vedere accidentalmente la password
Metterò la mia soluzione attuale come risposta di seguito, ma selezionerò felicemente una risposta migliore se qualcuno ne trova una. Sto pensando che dovrebbe esserci qualcosa di più semplice o forse qualcuno vede un problema di sicurezza che mi è sfuggito.