我有一個腳本調用bash腳本來做一些處理,但是腳本使用用戶輸入的數據調用bash腳本。PHP文件注入?
我想知道是否有辦法確保這個人(這是一個文件上傳)不會像;cd /;rm -rf *
追加到文件的末尾。或者其他任何類似的東西。普通的MYSQL注入方法會起作用嗎?有更好的選擇嗎?
我有一個腳本調用bash腳本來做一些處理,但是腳本使用用戶輸入的數據調用bash腳本。PHP文件注入?
我想知道是否有辦法確保這個人(這是一個文件上傳)不會像;cd /;rm -rf *
追加到文件的末尾。或者其他任何類似的東西。普通的MYSQL注入方法會起作用嗎?有更好的選擇嗎?
能夠注入shell命令將是... shell命令注入,既不是文件也不是SQL注入。爲了確保反對它,使用escapeshellarg
:
exec('bash bash-script ' . escapeshellarg($userInput));
你檢查escapeshellcmd()將和escapeshellarg()還是我錯過了點?
保護這個過程是一個雙向過程:
假設我將一個數字傳遞給程序...
$num = $_GET['num']; // get the input
$num = (int)$_GET['num']; // ensure it is an integer
$num = max($num, 0); // ensure it is at least 0
$num = min($num, 800); // ensure it is at most 800
$num = escapeshellarg($num); // this is overkill at this point, but you never know
exec('command '.$num);
A s以上建議,你也可以有自己的小語言要做到這一點,但...
最後的,還有另一種選擇。有些函數接受命令和參數作爲單獨的參數,例如popen()
(您可以通過管道推送命令參數)。但這取決於實施。
正常的sql注入**不會停止**這。 –
編寫您自己的腳本語言,只提供您需要公開的功能。 –
F有什麼與MySQL有關呢? – Christian