¿Por qué es peligroso eval "ls -l $filename" cuando filename proviene de un usuario?
eval "ls -l $filename"
filename
ls -l ejecuta automáticamente whoami cada vez que un nombre de archivo no es válido.
ls -l
whoami
eval vuelve a analizar la cadena construida como código del shell, por lo que la entrada puede introducir comandos adicionales.
eval
El comando read ejecuta cada línea antes de asignarla a la variable.
read
eval restringe la cadena a argumentos de ls, por lo que ignora la sintaxis adicional del shell.
ls