欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

PHP整站防注入程序

程序员文章站 2022-04-16 10:30:04
...
这是一个考虑比较全面的php和sql结合的防注入程序,在php方便主要对get,post,cooke,files进行了过滤,在sql中我们就对delete,update一些查询命令进行检测过滤.

SQL注入攻击的总体思路

发现SQL注入位置;判断后台数据库类型;确定XP_CMDSHELL可执行情况发现WEB虚拟目录上传ASP,php,jsp木马;得到管理员权限;

PHP整站防注入程序实例代码如下:

 $v) {
            $array[$k] = sec($v);
        } //开源代码phprm.com
        
    } else if (is_string($array)) {
        //使用addslashes函数来处理
        $array = addslashes($array);
    } else if (is_numeric($array)) {
        $array = intval($array);
    }
    return $array;
}
?>

1、整型参数的判断

当输入的参数YY为整型时,通常abc.asp中SQL语句原貌大致如下:

select * from 表名 where 字段=YY,所以可以用以下步骤测试SQL注入是否存在。

①HTTP://xxx.xxx.xxx/abc.asp?p=YY'(附加一个单引号),此时abc.ASP中的SQL语句变成了

select * from 表名 where 字段=YY',abc.asp运行异常;

②HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=1,abc.asp运行正常,而且与HTTP://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;

③HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=2,abc.asp运行异常;

如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞.

综合上面我们写一个整型过滤函数,代码如下:

 $max) {
        die('最多$max字节');
    }
    return stripslashes_array($str);
}
?>

当输入的参数YY为字符串时,通常abc.asp中SQL语句原貌大致如下:

select * from 表名 where 字段='YY',所以可以用以下步骤测试SQL注入是否存在。

①HTTP://xxx.xxx.xxx/abc.asp?p=YY'(附加一个单引号),此时abc.ASP中的SQL语句变成了

select * from 表名 where 字段=YY',abc.asp运行异常;

②HTTP://xxx.xxx.xxx/abc.asp?p=YY&;nb ... 39;1'='1',abc.asp运行正常,而且与HTTP://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;

③HTTP://xxx.xxx.xxx/abc.asp?p=YY&;nb ... 39;1'='2',abc.asp运行异常;

如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞,代码如下:

 $v) {
            $array[$k] = stripslashes_array($v);
        }
    } else if (is_string($array)) {
        $array = stripslashes($array);
    }
    return $array;
}
?>

好了文章介绍到的防注入也算是比较全面的,大家可以测试或更出更好的方法.


本文地址:

转载随意,但请附上文章地址:-)