2016-02-12 72 views
0

我需要一個只有3個字母的參數傳遞給bash腳本。PHP GET安全

如果我只是將所有內容切成3個字母以上,它足夠安全嗎?

$var = $_GET['var']; 
$var = substr($var, -3); 

我想不出一種方法來利用這個,但誰知道。

+0

解釋什麼你到底需要做什麼? – Deepak

+0

這取決於很多事情。我甚至不知道從哪裏開始。 – Phiter

+0

消毒數據通常是一個壞主意。只要測試它的合法性,如果不合法就把它扔掉。 – maxhb

回答

2

我不認爲這是安全的。誰知道bash中的三個字符可能是什麼?

正則表達式如何指定允許的字符?這可能是更安全的方法。

使用正則表達式過濾器:

$var = filter_var($_GET['var'], FILTER_VALIDATE_REGEXP, 
array("options"=>array("regexp"=>"--- your regex ---"))); 

if($var!==false) { 
    // pass to bash 
} 
+0

謝謝,這實際上是有道理的 – Heliosh

0

你應該根據你將要使用它的內容(可能是MySQL查詢)轉義輸入。如果輸入不正確而不是僅僅是剪切它,那麼返回錯誤信息可能會更好,因此使用腳本的人知道錯誤發生了什麼,如果他意外通過或者沒有錯誤輸入。