2010-05-29 72 views
-1

Hola usando estas funciones,que riesgo corro en tener problemas de seguridad,es necesesario usar extract()o hay alguna manera mejor de convertir las variables superglobales(array)en trozos de variables。使用提取的PHP超全球植物有什麼風險?


好,有在超全局變量$ _POS和$ _GET,我的下面的方式工作,使用功能提取一定的風險。

有SQL注入風險或存在另一種提取

if(get_magic_quotes_gpc()) { 
    $_GET = stripslashes($_GET); 
    $_POST =stripslashes($_POST); 
} 

function vars_globals($value = '') { 
    if(is_array($value)) 
     $r = &$value; 
    else 
     parse_str($value, $r); 

    return $r; 
} 

$r = vars_globals($_GET); 

extract($r, EXTR_SKIP); 
+0

如果有人志願者翻譯,這將不勝感激:) – 2010-05-29 06:43:49

+4

Немогупонятьчтотутнаписано – 2010-05-29 07:05:45

+0

好,有在超全局變量$ _POS和$ _GET使用功能提取一定的風險,我的工作以下方式。 存在SQL注入的風險,或者有替代提取 對不起,翻譯谷歌! – zetanova 2010-05-29 07:34:19

回答

0

是存在着風險。您不想盲目地將用戶輸入導入到符號表中。您應該花時間驗證和/或清理用戶輸入。 filter_var函數可以幫助解決這個問題。

當插入數據庫時​​,使用驅動程序的轉義機制來消除注入的可能性。如果你使用mysql_ *函數,你可以使用mysql_real_escape_string。但是,使用PDO和參數化查詢更好。