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

时间:2010-05-29 06:00:34

标签: php extract

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。


好,使用超全局变量中的函数提取作为$ _POS和$ _GET存在一些风险,我的工作方式如下。

存在SQL INJECTION的风险,或者有提取

的替代方法
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);

1 个答案:

答案 0 :(得分:0)

是的,存在风险。您不希望盲目地将用户输入导入到符号表中。您应该花时间验证和/或清理用户输入。 filter_var函数可以为此提供帮助。

插入数据库时​​,使用驱动程序的转义机制来消除注入的可能性。如果您正在使用mysql_ *函数,则使用mysql_real_escape_string。但是,为此使用PDO和参数化查询要好得多。