2015-12-21 64 views
1

問題:有沒有辦法從獲取請求中僞造值?

背景:

我寫了一個簡單的PHP腳本,我想是從在命令行或通過GET請求訪問。如果通過命令行使用它,我可以調用名爲php myScript.php variableValue的腳本。它目前的效果很好。但是,當從互聯網上打電話時,我也需要一個安全碼。使用這個僞代碼,這些將是$_GET陣列中的值。

$_GET["variableValue"]="abcde"; 
$_GET["securityCode"]="IjfkeLEkf738J9("` 

要找出其中的腳本是從所謂的,我只是檢查,看看數組的長度。如果它有多個元素,我用$ argv值來評估它。否則,我使用$_GET值進行評估。如果我使用$ argv值進行評估,那麼我不檢查securityCode,因此我的問題是$ argv是否可以從get請求中僞造。

回答

1

沒有,。在較新版本的PHP中,它不應該是一個問題。在舊版本中,只要register_globals關閉,GET變量就不會自動轉換爲全局變量。

2

通過檢查常量PHP_SAPI或使用php_sapi_name()函數,可以檢測腳本是否從命令行調用。例如:

if (PHP_SAPI !== 'cli') { 
    $variableValue = $_GET["variableValue"]; 
    $securityCode = $_GET["securityCode"]; 
    // check the above values and deny access if they are not the right ones. 
} 
+0

我贊成你,因爲這看起來是最好的方法,但我把GrandmasterB標記爲正確,因爲它是對問題標題的更直接回答。 – user3413723