文件包含漏洞是什么?
程序开发人员通常会把可重复使用函数或语句写到单个文件中,形成 “ 封装 ” 。在使用某个功能的时
候,直接调用此文件,无需再次编写,提高代码重用性,减少代码量。这种调用文件的过程通常称
为包含。
程序开发人员都希望代码更加灵活,所以会把被包含的文件的路径设置为变量,来进行动态调用
( 包含 ) 但正是由于这种灵活性,如果被包含文件的路径客户端可控,造成任意文件包含漏洞。
几乎所有的脚本都会提供文件包含的功能,文件包含漏洞在 PHP 的 Web 应用中居多,在
JSP/ASP/ASPNET 程序中比较少。
文件包含是 php 的一个功能,是程序员把代码、函数和语句写入文件中进行封装,调用文件的过程就叫
做包含。所谓文件包含漏洞,是指在代码中引入其他文件作为 php 文件执行时, 未对文件进行严格过
滤,导致用户指定任意文件,都作为 php 文件解析执行 。
静态包含和动态包含
1. 静态包含在转换成为 java 文件的时候将包含文件的内容 “ 复制 ” 到主体文件,然后作为一个整体
编译。最终编译为一个 java 文件。
2. 动态包含是各个 jsp 文件分别转换,分别编译。最终编程成多个 java 文件。
php 文件包含有什么危害?
无视文件扩展名读取文件内容。
无条件解析 PHP 代码,为图片木马提供了出路。
文件包含漏洞也能读取文件内容,并且有执行图片马的功能。
文件包含漏洞怎么防御?
尽量少的使用动态包含
严格过滤被包含文件的路径
将参数 allow_url_include 设置为 Off;
使用参数 open basedir 限定文件访问范围(白名单)