php攻击漏洞总结

1、两字节编码(gbk)都存在宽字节攻击问题[character_set_client=gbk]

          案例:http://www.cnblogs.com/lcamry/articles/5625276.html

          解决方案:mysql_query("SET character_set_connection=gbk, character_set_results=gbk,character_set_client=binary");

          character_set_client=binary 采用二进制传输,可以解决这个问题

2、两字节编码(gbk)谨慎使用icon,防止攻击

        案例:http://www.cnblogs.com/lcamry/articles/5625276.html

 

3、php header函数使用问题

      案例:当使用header函数是如果后面没有die或者exit函数时,程序仍然继续执行。

      解决方案:header函数后面添加程序停止函数[exit,die]

4、urldecode、rawurldecode宽字节攻击[a.php?id=%2527]

   

    

    

 

       案例:http://blog.csdn.net/qlxmy/article/details/55252980

      解决方案: 通过urlencode处理过后的变量在通过其他函数过滤一下

      解析:原因是urldecode吧%25转换成%,然后%27就变成'

 

5、include、include_once、require、require_once 包含文件时,出现恶意攻击

     案例:https://www.secpulse.com/archives/3206.html

               http://www.cnblogs.com/mujj/articles/3406740.html

     解决方案:

  

本部分主要从代码层和Web服务器安全配置两个方面来讲解PHP文件包含漏洞的防范。

1、首先来从代码层来讲,在开发过程中应该尽量避免动态的变量,尤其是用户可以控制的变量。一种保险的做法是采用“白名单”的方式将允许包含的文件列出来,只允许包含白名单中的文件,这样就可以避免任意文件包含的风险
    

2、在Web服务器安全配置方面可以通过设定php.ini中open_basedir的值将允许包含的文件限定在某一特定目录内,这样可以有效的避免利用文件包含漏洞进行的攻击。需要注意的是,open_basedir的值是目录的前缀,因此假设设置如下值:open_basedir=/var/www/test,那么实际上以下目录都是在允许范围内的。

/var/www/test

/var/www/test123

/var/www/testabc

如果要限定一个指定的目录,需要在最后加上”/“,这一点需要特别注意。

open_basedir=/var/www/test/

如果有多个目录,在Windows下目录间用分号隔开,在Linux下面则用冒号隔开。

 

posted @ 2017-08-02 14:59  云龙笔记  阅读(312)  评论(0编辑  收藏  举报