我得到一個shell腳本的安全問題:什麼是參與這一文件
#!/bin/sh
#file name : eg.1
X=$1
eval "$X"
如果我啓動此腳本爲一組用戶或其他用戶,有沒有提出的任何安全問題?
我得到一個shell腳本的安全問題:什麼是參與這一文件
#!/bin/sh
#file name : eg.1
X=$1
eval "$X"
如果我啓動此腳本爲一組用戶或其他用戶,有沒有提出的任何安全問題?
eval
命令功能非常強大,非常容易被濫用。 它會導致您的代碼被解析兩次而不是一次;這意味着,例如,如果您的代碼中包含變量引用,那麼shell的解析器將評估該變量的內容。如果變量包含一個shell命令,shell可能會運行該命令,無論您是否希望它。這可能會導致意想不到的結果,特別是可以從不受信任的來源讀取變量時。
# This code is evil and should never be used!
fifth() {
_fifth_array=$1
eval echo "\"The fifth element is \${$_fifth_array[4]}\"" # DANGER!
}
a=(zero one two three four five)
fifth a
輸出
fifth 'x}"; date; #'
第五元件是 星期四03月27日16時13分47秒EDT 2014
more details
這完全取決於什麼這個腳本的參數是。這是整個劇本嗎?這似乎有點無意義。 –
是的,它是,我想知道如果我餵我任何惡意參數,是否會對系統進行任何安全問題。 – VinceFIT
答案是:是的。 –