文件包含漏洞概述

时间:2024-02-16 11:27:16

什么是文件包含

开发人员将需要重复调用的函数写入一个文件,对该文件进行包含时产生的操作。这样编写代码能减少代码几余,降低代码后期维护难度保证网站整体风格统下:导航栏、底部footer栏等。

漏洞产生原因

文件包含函数加载的参数没有经过过滤或严格定义,可以被用户控制包含其他恶意文件,导致了执行非预期代码。
常见漏洞代码:

<?php
$filename=$_GET['filename'];
include($filename);
?>

访问的URL:
http://xxx/xxx.php?filename=show.php
改变filename值即可改变代码中包含的文件

PHP中文件包含函数

1.require组
require : 函数出现错误时,会直接报错并退出程序执行。
require_once : 出错时直接退出; 且仅包含一次。在脚本执行期间同一个文件可能
被多次引用,确保只包含一次以避免函数重定义、变量重新赋值等问题。
2.include组
include : 函数出现错误时,会抛出一个警告,程序继续运行。
include once :函数出现错误时,会抛出警告,且仅包含一次。