2013-03-02 77 views
0

我的PHP網頁在服務器上運行一個命令:在PHP執行命令中使用時存儲的密碼在哪裏?

exec("encrypt -pPassw0rd infile outfile; rm infile"); 

服務器是Linux。

剛跑一:

grep -R "Passw0rd"/

這就夠了檢查,如果密碼不存儲任何地方?

+0

一)IMO它不是使用這些PHP函數是個好主意,我總是阻止他們在PHP配置。 b)爲什麼要把密碼存儲起來? – markus 2013-03-02 18:52:29

+1

在某個日誌文件中? bash的歷史? – jack 2013-03-02 18:56:57

回答

0

這裏的要點是,來自用戶的輸入,不管上下文,都不應該被信任!

爲了對付這些類型的攻擊,PHP提供了兩個函數escapeshellarg()和escapeshellcmd()。

escapeshellarg()函數旨在移除或以其他方式消除從用戶輸入接收的任何可能有害的字符,以用作系統命令的參數(在本例中爲zip命令)。該函數的語法如下:

escapeshellcmd()與其對應部分類似,但它只能轉義對底層操作系統有特殊含義的字符。與escapeshellarg()不同,escapeshellcmd()不會處理包含空格的輸入。

如果用戶輸入將用作系統調用的參數列表的一部分,那麼escapeshellarg()函數始終是更好的選擇。

希望有所幫助。

法比奧 @fcerullo

+0

密碼不是來自系統生成的用戶。 – jack 2013-03-06 19:20:18

相關問題