文件包含

365 字

文件包含

文件包含是应用把某个文件加载进程序执行或渲染。若文件名可控,就可能从“读取文件”升级到“执行不该执行的内容”。

基本类型

类型 说明
本地文件包含 包含服务器本地文件,如模板、日志、上传文件
远程文件包含 从外部地址加载文件,风险更高
模板包含 根据参数选择页面片段或主题文件

文件包含常见于 PHP、模板引擎、插件系统、多语言页面、主题切换和老旧 CMS 中。

风险判断

如果参数决定页面加载哪个文件,或者错误信息暴露了 include、require、template、view 等字样,就要关注包含路径是否可控。上传功能和日志文件也值得结合观察,因为“可写文件”一旦被包含,风险会明显升高。

防护要点

用固定枚举值选择模板,不接受任意路径。关闭远程包含能力,限制可包含目录,避免把上传目录、日志目录和模板执行目录混在一起。报错信息不向外暴露真实路径和调用栈。

Licensed under CC BY-NC-SA 4.0