盡管現(xiàn)在已經(jīng)不是一個嚴重的問題,但是 IFS 環(huán)境變量曾經(jīng)在老的 Unix shell 中導(dǎo)致了很多安全問題。 IFS 用來確定命令中什么樣的分隔詞被發(fā)送到原始的 Unix Bourne shell,并與其他環(huán)境變量一樣被傳遞下去。通常 IFS 變量應(yīng)該有一個空格、一個制表符和一個新行的值 -- 這些字符都會被作為一個空格字符來處理。但是攻擊者可以將 IFS 設(shè)置為不懷好意的值,例如,他們可能向 IFS 添加一個“/”。這樣,當 shell 試圖運行 /bin/ls 時,老的 shell 將把“/”解釋為一個空格字符 -- 也就是說 shell 將運行“bin”程序(不管在哪兒找到一個),并使用“l(fā)s”選項!這樣攻擊者就可以提供一個程序可以找到的“bin”程序。 值得欣慰的是,當今大部分的 shell 都對此進行了防范,當它們啟動時至少會自動重新設(shè)置 IFS 變量 -- 包括 GNU bash,GNU/Linux 常用的 shell。GNU bash 還限制了 IFS 的使用,使之只用于擴展的結(jié)果。這就意味著減少了 IFS 的使用,而且,這樣危險度也大大降低了 (早期的 sh 使用 IFS 來分離所有的詞,甚至命令)。不幸的是,不是所有的 shell 都可以保護自己( Practical Unix Internet Security-- 參閱 參考資料 中的鏈接 -- 中有測試這一問題的樣例代碼)。盡管這一特定的問題已經(jīng)(大部分)可以防范,但它仍以實例證明了沒有經(jīng)過檢查的環(huán)境變量可以帶來難以捉摸的問題。
創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、網(wǎng)站建設(shè)與策劃設(shè)計,洪江管理區(qū)網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:洪江管理區(qū)等地區(qū)。洪江管理區(qū)做網(wǎng)站價格咨詢:18980820575
求采納
Linux下有一個特殊的環(huán)境變量叫做IFS,叫做內(nèi)部字段分隔符(internal field separator)。IFS環(huán)境變量定義了bash shell用戶字段分隔符的一系列字符。默認情況下,bash shell會將下面的字符當做字段分隔符:空格、制表符、換行符。
Bash shell會將上面的三個字符當做列表中新字段的開始。例如, 1 2 3 字符串在shell中會當做三個字段1,2,3。如果想要以逗號分隔字段,則要修改IFS的值,修改如下:
參考資料:
Linux下有一個特殊的環(huán)境變量叫做IFS,叫做內(nèi)部字段分隔符(internal field separator)。IFS環(huán)境變量定義了bash shell用戶字段分隔符的一系列字符。默認情況下,bash shell會將下面的字符當做字段分隔符:空格、制表符、換行符。可查看《Linux就該這么學(xué)》了解更多Linux介紹。