所以我們知道如果你編寫bash腳本,你必須小心文件名中的特殊字符,比如空格,引號和換行符。我記得在某處閱讀的地方顯示/回顯/打印一些文件名可能在bash中很危險。這是真的?是否有任何特殊字符可以在bash中打印/顯示文件名危險?
是否有任何字符可以放在一個文件名中,如果該文件名被顯示/打印/ echo'ed等,將是安全問題?
假設我在linux系統上運行bash。
這實際上不是一個問題,我現在有,也不是一個,我需要解決,這是更多的好奇,看看這是否是一個真實的東西
所以我們知道如果你編寫bash腳本,你必須小心文件名中的特殊字符,比如空格,引號和換行符。我記得在某處閱讀的地方顯示/回顯/打印一些文件名可能在bash中很危險。這是真的?是否有任何特殊字符可以在bash中打印/顯示文件名危險?
是否有任何字符可以放在一個文件名中,如果該文件名被顯示/打印/ echo'ed等,將是安全問題?
假設我在linux系統上運行bash。
這實際上不是一個問題,我現在有,也不是一個,我需要解決,這是更多的好奇,看看這是否是一個真實的東西
呼應時最糟糕的事情,可以發生在你身上的是''
的破解,然後在;
的幫助下你可以有任意的程序執行漏洞。這是bash特殊字符的列表:
" $ & '() * ; < > ? [ \ ] ` { | } ~ space tab cr lf
這些可能會呈現潛在的威脅,具體取決於它們的使用情況。
除了文字,命令名可能是一個問題,因爲文件調用rm
$ ls # List files
rm somefile
$ `ls` # Why aren't my file listed?
$ ls # Opps where did somefile go?
rm
要當心backticks
或eval
當你真的在做什麼腳本。
領先的連字符:
$ ls
-dumbfile
$ rm -dumbfile
rm: invalid option -- 'd'
$ rm -- -dumbfile # use -- to delete files containing leading -
在配置錯誤的終端和語言環境,UTF-8可能是危險的,太。幾年來,我使用了一個設置,在其中打印UTF-8文本導致將幾個字符添加到我鍵入的下一個命令。
$ cat file.txt
šómé ǧářbáǧě
$ 1;21
打字ls
後,結果是
$ 1;21ls
1: command not found
21ls: command not found