TLDR:
Lo script che hai citato è sicuro!
Ma comprendendo che in produzione si può usare una versione diversa, si dovrebbe essere consapevoli dei seguenti concetti:
1.
Se la 'lettura' è vulnerabile all'iniezione di comando.
Se è vulnerabile, quindi 'nome' valore come 'Bob; cat / etc / passwd ' potrebbe restituire il contenuto del file passwd e ' Bob & & / bin / bash -i ' potrebbe dare una sessione bash interattiva.
Domande del genere erano già state poste, per esempio qui:
link
La risposta dice "No, non vulnerabile", a causa di:
"(..) modern shells parse the statement prior to any variable
substitution, and are thus unaffected by this attack."
Quindi nel tuo esempio l'input dell'utente da "leggere" non può essere ignorato dalla shell standard.
2.
Dove viene analizzato l'input?
Il tuo script è sicuro, perché "echo" non fornisce alcuna tecnica di escape (almeno non nota). Ma sii consapevole dell'uso di binari "pericolosi" come menzionato in f.e. qui:
link
Se l'input dell'utente è analizzato da: man | less | more, awk, find, nmap, python | php | perl, bash | sh stesso, quindi è possibile l'escape, garantendo shell completamente interattiva ( Ho appena provato con less, python e find).
Se inserisci l'input solo per echo, come nell'esempio, sei OK.
3.
Se il tuo input è usato all'interno del comando shell con asterischi (*), come: tar * o ls *
Non riesco a immaginare quando potrebbe essere utile nel tuo scenario, ma è sempre meglio menzionarlo. Se questo è un caso, per favore acquisisci familiarità con la seguente scrittura:
link
Un comportamento del genere potrebbe anche portare a sfuggire allo script.