使用提取的PHP超全局变量有什么风险?

使用提取的PHP超全局变量有什么风险?,php,extract,Php,Extract,在超全局变量中使用函数extract会有一些风险,如$\u POST和$\u GET,我采用以下方法工作 存在SQL注入的风险,或者存在提取的替代方案 if(get_magic_quotes_gpc()) { $_GET = stripslashes($_GET); $_POST =stripslashes($_POST); } function vars_globals($value = '') { if(is_array($value)) $r =

在超全局变量中使用函数
extract
会有一些风险,如
$\u POST
$\u 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);

是的,有风险。您不希望盲目地将用户输入导入符号表。您应该花时间验证和/或清理用户输入。该函数可以帮助实现这一点


当插入数据库时,使用驱动程序的转义机制来消除注入的可能性。如果您使用的是mysql函数,那么应该使用mysql\u real\u escape\u string。但是,使用PDO和参数化查询更好。

如果有人自愿翻译,我们将不胜感激:)БМПППППичиаиаиаиаиааиаиаиааиааааааа1072。有SQL注入的风险,或者有一个替代方案来翻译谷歌!