有些人可能知道可以從Flash遠程調用PHP方法。 有時,遠程PHP方法的輸入參數是一個整數數組。 由於PHP是動態輸入的,攻擊者可以傳遞任何數組。 必須在SQL查詢中使用整數數組。 目前我防止注射這樣的:動態類型語言和遠程方法調用
foreach ($unsafeArray as $value)
$safeArray[] = (int)$value;
你會怎麼推薦?也許我應該開始使用Java:D
有些人可能知道可以從Flash遠程調用PHP方法。 有時,遠程PHP方法的輸入參數是一個整數數組。 由於PHP是動態輸入的,攻擊者可以傳遞任何數組。 必須在SQL查詢中使用整數數組。 目前我防止注射這樣的:動態類型語言和遠程方法調用
foreach ($unsafeArray as $value)
$safeArray[] = (int)$value;
你會怎麼推薦?也許我應該開始使用Java:D
您可以使用此:$aSafeArray = array_map('intval', $aUnsafeArray);
以確保所有傳遞的值都是整數。我的建議是開始使用prepared statements! 示例:
$o->bindParam(':anint', $iInt, PDO::PARAM_INT);
你會推薦什麼?
我不是Flash專家,但的確可以通過知道它的名字來調用PHP方法,並且參數可以作爲數組傳遞。所以問題實際上不是遠程方法調用,而是輸入過濾和驗證。
根據不同的行爲,我會使用intval而不是硬轉換爲int(AFAIR它會在無效值時返回0),否則可以拋出異常或其他。你必須首先定義它的行爲。
也許我應該開始使用Java
不,除非你想同時在編譯和運行時的發展速度和巨大的存儲需求方面臃腫的解決方案:對
問題不在於類型系統,而是使用rpc協議。靜態/動態類型與其正交。 – troelskn 2011-05-31 07:24:24