我需要一個只有3個字母的參數傳遞給bash腳本。PHP GET安全
如果我只是將所有內容切成3個字母以上,它足夠安全嗎?
$var = $_GET['var'];
$var = substr($var, -3);
我想不出一種方法來利用這個,但誰知道。
我需要一個只有3個字母的參數傳遞給bash腳本。PHP GET安全
如果我只是將所有內容切成3個字母以上,它足夠安全嗎?
$var = $_GET['var'];
$var = substr($var, -3);
我想不出一種方法來利用這個,但誰知道。
我不認爲這是安全的。誰知道bash中的三個字符可能是什麼?
正則表達式如何指定允許的字符?這可能是更安全的方法。
使用正則表達式過濾器:
$var = filter_var($_GET['var'], FILTER_VALIDATE_REGEXP,
array("options"=>array("regexp"=>"--- your regex ---")));
if($var!==false) {
// pass to bash
}
謝謝,這實際上是有道理的 – Heliosh
你應該根據你將要使用它的內容(可能是MySQL查詢)轉義輸入。如果輸入不正確而不是僅僅是剪切它,那麼返回錯誤信息可能會更好,因此使用腳本的人知道錯誤發生了什麼,如果他意外通過或者沒有錯誤輸入。
解釋什麼你到底需要做什麼? – Deepak
這取決於很多事情。我甚至不知道從哪裏開始。 – Phiter
消毒數據通常是一個壞主意。只要測試它的合法性,如果不合法就把它扔掉。 – maxhb