2016-04-14 50 views
0

我包括file_get_contents()像這樣的遠程文件:檢查漏洞,包括遠程文件,與參數,在PHP腳本

function checkData($serial) { 
    file_get_contents("http://example.com/page.php?somevar=".$serial."&check=1"); 
    return $http_response_header; 
} 

這種遠程頁面執行一些基本的數據操作,並查找序列號在數據庫中(輸入已經過清理,我正在使用PDO,因此我不必擔心SQL注入),然後在響應頭中返回一個值。輸入$serial是一個get參數 - 由用戶完全控制。我想知道是否有任何輸入到這個功能會導致不良行爲,例如獲取除期望的其他頁面的內容。

在此先感謝。

+0

如果單純做'$串行獲得的'$ serial'值= $ _GET [「串行」]'然後傳遞直'checkData',我想,如果它感到驚訝不能以某種方式(不,我知道究竟怎麼了) – jDo

+0

至少你得'urlencode()來''那個$ serial'說法... – arkascha

+0

讓在你身邊的一些檢查,當接收串口,如果不是砍死您希望擁有的輸入,例如,您可以通過回覆「未知數據」或「此數據無效」等方式來中止腳本的進一步執行。 – Jer

回答

1

如果$ serial變量始終爲數值,則可以在值的周圍應用intval()以確保該值始終爲數字,並且不包含用於路徑遍歷/ RFC的其他非數字數據等。

EG

file_get_contents("http://example.com/page.php?somevar=".intval($serial)."&check=1"); 

或者,您可以使用preg_replace去除不需要的字符,如果您還需要字母字符。

http://php.net/manual/en/function.preg-replace.php