ThinkPHP3.x日志目录默认暴露导致敏感信息泄露,须立即移出Web根目录、关闭DEBUG模式并清空历史日志。

老项目还在用ThinkPHP3.x,意味着日志文件可被直接下载、SQL语句与管理员操作痕迹裸露在公网、攻击者无需登录就能拿到数据库结构甚至明文密码。
日志目录默认暴露在Web根目录下
ThinkPHP3.2默认将日志写入Application/Runtime/Logs/目录,该路径位于Web可访问范围内。只要知道域名和日期格式(如19_04_22.log),攻击者就能拼出完整URL直接下载日志文件。
这一步不需要任何权限,浏览器里输入http://yourdomain.com/Application/Runtime/Logs/26_08_06.log就能看到当天所有SQL查询、POST参数、错误堆栈——包括你刚改过的后台账号密码。
【Runtime目录必须从Web根目录移出,否则关DEBUG也无效】
立即学习“PHP免费学习笔记(深入)”;
DEBUG模式一旦开启,敏感信息自动落盘
方法一:检查入口文件index.php中是否存在define('APP_DEBUG', true);或类似配置。若存在,立刻改为false。
方法二:检查Conf/config.php中是否设置了'DEBUG' => true。注意有些项目会把DEBUG开关藏在数据库配置里,比如通过读取config表字段动态加载,这种要连同数据库一起查。
这一步改完后必须清空Application/Runtime/Logs/下的全部历史日志文件——旧文件不会自动消失,黑客随时能翻出来。
紧急止血三步操作
第一步:登录服务器,执行rm -rf Application/Runtime/Logs/*
第二步:确认Application/目录不在Web可访问路径内;如果还在,立即将其整体移出Web根目录,例如移到/home/wwwroot/runtime/,并在框架配置中修改RUNTIME_PATH常量指向新位置。
第三步:打开Application/Common/Conf/config.php,找到'DEBUG' => true这一行,改为'DEBUG' => false;若没找到,搜索整个项目代码,把所有define('APP_DEBUG', true)全部替换为false。



















