PHP POST, GET 参数过滤,预防sql注入函数

PHP POST GET 预防sql注入函数

1. 实际过滤函数 可适当修改其中的正则表示式

static public function filterWords(&$str)
{
    $farr = array(
        "/<(\\/?)(script|i?frame|style|html|body|title|link|meta|object|\\?|\\%)([^>]*?)>/isU",
        "/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU",
        "/select\b|insert\b|update\b|delete\b|drop\b|;|\"|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile|dump/is"
    );
    $str = preg_replace($farr,'',$str);
    $str = strip_tags($str);
    return $str;
}

2. 调用此函数 过滤参数中的value值

static function filterParams(&$params, $tmp = array())
{
    if(is_array($params)){
        foreach($params as $k => &$v){
            if(is_array($v))
            {
                self::filterParams($v);
            }else{
                self::filterWords($v);

            }
        }
    }
    else
    {
        $arr[] = self::filterWords($params);
    }
    return $params;
}

3. 调用此函数,过滤参数中的key值

static function filterKeys($arr, $subKey, &$myArr)
{
    foreach ($arr as $k => $v) {
        if (is_array($v)) {
            $filterKey = self::filterWords($k);
            self::filterKeys($v, $filterKey, $myArr);

        } else {
            $filterKey = self::filterWords($k);
            if ($subKey != '') {
                $myArr[$subKey][$filterKey] = $v;
            } else {
                $myArr[$filterKey] = $v;
            }
        }
    }

}