我有一個html表單,要求用戶輸入一個域名,這是張貼到下面的php7.0頁面處理一個shell腳本,然後通過輸出通過aha寫入到一個HTML頁面,然後顯示。如何在php7中使用shell_exec時停止命令注入?
我的問題是我怎麼能防止用戶注入命令,如:
domain.com | rm * -rf
我認爲這可以通過使用safe_mode並限制命令可以運行的目錄來完成,但現在看起來這個功能已經被棄用了。
$domain_arg = escapeshellarg($_POST['domain']);
$today = date("Y-m-d-H:i:s");
$cmd = "/home/ubuntu/dtest/dtest.sh $domain_arg | aha -b -t 'Domain test of $domain_arg' > /var/www/website/results/$domain_arg.$today.html";
$output = shell_exec($cmd);
header("Location: http://the.web.com/results/$result.$today.html");
非常危險,允許用戶輸入注入'執行'命令。在做這件事之前,你最好有一些非常好的驗證。我相信你可以寫一個驗證器,確保輸入是一個有效的域名。 – Pitchinnate
使用'escapeshellarg'就是你需要做的,而你正在做。 – miken32
雖然你應該使用別的東西作爲文件名組件。 – miken32