2012-11-29 36 views
3

所以我們知道如果你編寫bash腳本,你必須小心文件名中的特殊字符,比如空格,引號和換行符。我記得在某處閱讀的地方顯示/回顯/打印一些文件名可能在bash中很危險。這是真的?是否有任何特殊字符可以在bash中打印/顯示文件名危險?

是否有任何字符可以放在一個文件名中,如果該文件名被顯示/打印/ echo'ed等,將是安全問題?

假設我在linux系統上運行bash。

這實際上不是一個問題,我現在有,也不是一個,我需要解決,這是更多的好奇,看看這是否是一個真實的東西

回答

1

呼應時最糟糕的事情,可以發生在你身上的是''的破解,然後在;的幫助下你可以有任意的程序執行漏洞。這是bash特殊字符的列表:

" $ & '() * ; < > ? [ \ ] ` { | } ~ space tab cr lf 

這些可能會呈現潛在的威脅,具體取決於它們的使用情況。

0

除了文字,命令名可能是一個問題,因爲文件調用rm

$ ls    # List files 
rm somefile 

$ `ls`    # Why aren't my file listed? 

$ ls    # Opps where did somefile go? 
rm 

要當心backtickseval當你真的在做什麼腳本。

領先的連字符:

$ ls 
-dumbfile 

$ rm -dumbfile 
rm: invalid option -- 'd' 

$ rm -- -dumbfile # use -- to delete files containing leading - 
1

在配置錯誤的終端和語言環境,UTF-8可能是危險的,太。幾年來,我使用了一個設置,在其中打印UTF-8文本導致將幾個字符添加到我鍵入的下一個命令。

$ cat file.txt 
šómé ǧářbáǧě 
$ 1;21 

打字ls後,結果是

$ 1;21ls 
1: command not found 
21ls: command not found 
相關問題