2010-05-29 51 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和参数化查询更好。