聘我网

新概念招聘3.0

如何批量处理POST过来的数据防止SQL注入?

vote up0vote downstar

用的是mysql扩展,所以还要手工处理。。

 

1 个答复

vote up0vote downcheck

用法:

if(!safeProcess($_POST,array('title','body'),array('number'),$con))
        return;

之后$_POST中的参数就不用担心注入问题了

实现:

function safeProcess(&$arr,$s,$n,&$con){
    $all = array($s,$n);
    foreach($all as $l => $w)
    {
        if($w)
        foreach($w as $i => $v)
        {
            if(null == $v)
                continue;
            if(is_array($v))
            {
                for($j = $v[1]; $j < $v[2]; $j++)
                {
                    foreach($v[0] as $k)
                    {
                        if(array_key_exists($k . $j,$arr)) {
                            if(0 == $l)
                                $arr[$k . $j] = mysql_real_escape_string(trim($arr[$k . $j]),$con);
                            else {
                                $arr[$k . $j] = trim($arr[$k . $j]);
                                if(!is_numeric($arr[$k . $j]) && '' != $arr[$k . $j])
                                {
                                    //file_put_contents('failsafe.txt',$k . $j . "\r\n" . $arr[$k . $j]);
                                    return false;
                                }
                                if('' == $arr[$k . $j])
                                    $arr[$k . $j] = 'NULL';
                            }
                        }
                    }
                }
                if(isset($v[3]))
                {
                    foreach($v[3] as $k)
                    {
                        if(array_key_exists($k,$arr))
                        foreach($arr[$k] as $o => $var)
                        {
                            if(0 == $l)
                                $arr[$k][$o] = mysql_real_escape_string(trim($arr[$k][$o]),$con);
                            else {
                                $arr[$k][$o] = trim($arr[$k][$o]);
                                if(!is_numeric($arr[$k][$o]) && '' != $arr[$k][$o])
                                {
                                    //file_put_contents('failsafe.txt',$k . $j . "\r\n" . $arr[$k . $j]);
                                    return false;
                                }
                                if('' == $arr[$k . $o])
                                    $arr[$k . $o] = 'NULL';
                            }
                        }
                    }
                }
            }
            else if(array_key_exists($v,$arr))
            {
                if(0 == $l)
                    $arr[$v] = mysql_real_escape_string(trim($arr[$v]),$con);
                else {
                    $arr[$v] = trim($arr[$v]);
                    if(!is_numeric($arr[$v]) && '' != $arr[$v])
                        return false;
                    if('' ==  $arr[$v])
                         $arr[$v] = 'NULL';
                }
            }
        }
    }
    return true;
}
链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.