Pourquoi eval "ls -l $filename" est-il dangereux lorsque filename provient d’un utilisateur ?
eval "ls -l $filename"
filename
eval limite la chaîne aux arguments de ls, donc toute syntaxe shell supplémentaire est ignorée.
eval
ls
ls -l exécute automatiquement whoami lorsqu’un nom de fichier est invalide.
ls -l
whoami
eval analyse à nouveau la chaîne construite comme du code shell, ce qui permet à l’entrée d’ajouter d’autres commandes.
La commande read exécute chaque ligne avant de l’affecter à la variable.
read