• 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

  • 相关阅读:
    WiFi QC 自动测试:ixChariot API初探
    WiFi QC 自动测试:Qt控制无线路由器
    树莓派实现只有一个按键的播放器(2)
    树莓派变身路由器
    树莓派实现一个下载机
    对于AP中为什么有4个WEP KEY的分析
    备份U盘分区表,未雨绸缪
    根文件系统理解
    kernel(一)编译体验
    kernel(二)源码浅析
  • 原文地址:https://www.cnblogs.com/caixiufang/p/10791069.html
Copyright © 2020-2023  润新知