사용자가 filename의 값을 제공할 때 eval "ls -l $filename"이 위험한 이유는 무엇인가요?
filename
eval "ls -l $filename"
read 명령은 변수에 할당하기 전에 모든 줄을 실행합니다.
read
eval은 구성된 문자열을 셸 코드로 다시 구문 분석하므로, 입력에 추가 명령이 포함될 수 있습니다.
eval
파일 이름이 유효하지 않으면 ls -l이 자동으로 whoami를 실행합니다.
ls -l
whoami
eval은 문자열을 ls 인수로 제한하므로 추가 셸 문법은 무시됩니다.
ls