原理:服务器解析执行php文件时能够通过包含函数加载另外一个文件中的php代码,当被包含的文件中存在木马时,也就意味着木马程序会在服务器上加载执行。
防御:
①严格判断包含中的参数是否外部可控,因为文件包含漏洞利用成功与否的关键点就在于被包含的文件是否可被外部控制;
②路径限制:限制被包含的文件只能在某一文件内,一定要禁止目录跳转字符,如:“../”;
③包含文件验证:验证被包含的文件是否是白名单中的一员;
④尽量不要使用动态包含,可以在需要包含的页面固定写好,如:include('head.php')。
本地文件包含漏洞涉及的函数有哪些?
include:包含并运行指定的文件,包含文件发生错误时,程序警告,但会继续执行。
include_once:和 include 类似,不同处在于 include_once 会检查这个文件是否已经被导入,如果已导入,下文便不会再导入,直面 once 理解就是只导入一次。
require:包含并运行指定的文件,包含文件发生错误时,程序直接终止执行。
require_once:和 require 类似,不同处在于 require_once 只导入一次。