zoukankan      html  css  js  c++  java
  • php安全开发(1)文件包含漏洞

    开发过程总结的漏洞:

    一,,如何造成包含漏洞:在通过函数包含文件时,由于没有对包含的文件名进行有效的过滤处理,被攻击者利用从而导致了包含了Web根目录以外的文件进来,就会导致文件信息的泄露甚至注入了恶意代码。
    PHP文件包含的几个危险函数:
    include():只有代码执行到该函数时才会包含文件进来,发生错误时只给出一个警告并继续向下执行。
    include_once():和include()功能相同,区别在于当重复调用同一文件时,程序只调用一次。
    require():只要程序执行就包含文件进来,发生错误时会输出错误结果并终止运行。
    require_once():和require()功能相同,区别在于当重复调用同一文件时,程序只调用一次。

    二,要想成功的利用文件包含漏洞需要满足下面两个条件:
    1,include()等函数通过动态变量的方式引入需要包含的文件
    2,用户能够控制该变量
    分类:
      本地文件包含
          文件包含漏洞也是代码注入的一种,代码注入的原理是注入一段用户能够控制执行的脚本或代码,并让服务器端执行

      远程文件包含
          如果PHP的配置选项allow_url_include为On的话,则include/require函数是可以加载远程文件的,这种漏洞被称为远程文件包含漏洞

    三,文件包含漏洞如何避免

    禁止服务器远程文件包含
    从代码层来讲,在开发过程中应该尽量避免动态的变量,尤其是用户可以控制的变量。一种保险的做法是采用“白名单”的方式将允许包含的文件列出来,只允许包含白名单中的文件,这样就可以避免任意文件包含的风险
    将文件包含漏洞利用过程中的一些特殊字符定义在黑名单中,对传入的参数进行过滤,但这样有时会因为过滤不全,导致被有经验的攻击者绕过。过滤.(点)/(斜杠)(反斜杠)
    服务器安全配置方面可以通过设定php.ini中open_basedir的值将允许包含的文件限定在某一特定目录内,这样可以有效的避免利用文件包含漏洞进行的攻击。需要注意的是,open_basedir的值是目录的前缀。如:open_basedir=/var/www/test

  • 相关阅读:
    上周热点回顾(12.1212.18)
    上周热点回顾(11.2111.27)
    上周热点回顾(11.1411.20)
    博客园电子期刊2011年11月刊发布啦
    “CDN加速”测试
    上周热点回顾(11.2812.4)
    上周热点回顾(12.1912.25)
    上周热点回顾(12.512.11)
    提醒:安装MS11100 .NET Framework高危漏洞补丁一定要所有服务器一起安装
    郑州公积金
  • 原文地址:https://www.cnblogs.com/caixiufang/p/10791069.html
Copyright © 2011-2022 走看看