讲师中心 微信公众号
AI工具推荐 视频效率加速

ThinkPHP 8.0 如何做代码审计?静态分析工具链与危险函数排查【规范】

陌杰大大_5912

陌杰大大_5912

发布时间:2026-07-07 21:41:50

|

771人浏览过

|

来源于php中文网

原创

ThinkPHP 8.0 入口点是 public/index.php,这是框架强制约定的唯一 Web 入口,源于“Web 目录隔离”设计,不可重命名或移动,否则导致自动加载失败、路由失效及配置错误。

thinkphp 8.0 如何做代码审计?静态分析工具链与危险函数排查【规范】

ThinkPHP 8.0 的入口点在哪?先定位路由和控制器

TP8 的代码审计不是从 index.php 开始乱翻,而是必须先确认请求如何落到具体类方法上。框架路由不再只是靠文件路径推断,app/route.php 和 route/route.php 是主路由定义处;若用了注解路由(如 @Route),得查 app/controller/ 下各控制器类的 PHPDoc 注释。常见错误是把 /admin/user/edit?id=123 直接对应到 admin/user/edit.php,实际它大概率落在 app/admin/controller/User.php 的 edit 方法里。漏掉这步,后面全在审计“空气”。

哪些函数调用必须人工逐行盯?eval、system、file_get_contents 的危险组合

静态扫描工具会标出 eval()、assert()、system()、shell_exec()、unserialize(),但真正要命的是它们和用户输入的耦合方式。比如:

  • eval($_GET['code']) 是明牌后门,一眼毙命
  • file_get_contents($_GET['file']) 没做路径过滤,配合 ../../config/database.php 就是任意文件读取
  • include $_POST['template'] . '.php' 是典型的任意文件包含,TP8 的自动加载机制也救不了这种写法

尤其注意 TP8 新增的 think\facade\Cache::tag() 或 think\facade\Log::write() 如果参数来自未过滤的 input(),可能触发反序列化链或日志注入——这类间接调用容易被忽略。

PHPStan + Psalm 怎么配才不漏报?绕过框架魔术方法的配置要点

默认跑 phpstan analyse 会大量报 Call to an undefined method,因为 TP8 大量使用魔术方法(如 __call、__get)和 Facade 动态代理。必须加配置:

立即学习“PHP免费学习笔记(深入)”;

btpanel phpsite 宝塔面板PHP网站
btpanel phpsite 宝塔面板PHP网站

宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理

下载
  • 在 phpstan.neon 中启用 phpstan-phpunit 和 phpstan-deprecation-rules 插件
  • 添加 includes: 指向 vendor/topthink/framework/src/think/facade/ 下的 Facade 类定义
  • 对模型类加 @property-read 注解,否则 $user->name 会被判为未定义属性

Psalm 同理,需在 psalm.xml 中 <ignorefiles></ignorefiles> 排除 runtime/ 和 vendor/,但要保留 app/ 和 config/ —— 配置文件里的数据库密码硬编码、调试模式开启('debug' => true)都是高危项,不能被忽略。

input() 和 request()->param() 的过滤差异,为什么不能无脑信任?

TP8 默认的 input() 函数会走全局过滤器(filter 参数控制),但开发者常犯两个错:

  • 写成 input('id') 而没指定类型,导致返回字符串,后续直接拼 SQL 或传给 intval() 前没校验,仍可能被绕过
  • 用 request()->param('file') 获取文件名,却没调用 pathinfo() 拆解后缀,也没进白名单校验,就直接传给 file_put_contents()

更隐蔽的是 input('data/a.*') 这种批量取值,如果 a 是数组且含恶意键名(如 __destruct),可能触发反序列化利用。别信“框架自动过滤”,得看过滤器是否启用、是否覆盖了所有入口($_GET、$_POST、$_COOKIE、$_REQUEST)。

TP8 的安全审计难点不在工具不会用,而在于框架层抽象掩盖了真实数据流向。一个 validate() 校验通过的参数,未必干净;一个 Db::table()->where() 看似用了预编译,但如果 where 条件是拼接的字符串而非绑定参数,照样 SQL 注入。盯住输入源、盯住敏感函数、盯住中间态变量,三者缺一不可。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

相关专题

更多
PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

0

2026.10.22

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

0

2026.10.22

剧云故事大纲与分场规划教程
剧云故事大纲与分场规划教程

本专题讲解剧云梗概与多级大纲功能,覆盖全局、分集、分场结构生成,以及主线冲突、剧情节点和场次顺序调整。

0

2026.10.22

VibeKnow PPT讲解视频教程汇总
VibeKnow PPT讲解视频教程汇总

本专题介绍VibeKnow PPT讲解模式的素材准备、旁白生成、页面节奏、画面呈现与导出设置,适合课程和培训场景。

0

2026.10.22

VibeKnow PDF转视频教程合集
VibeKnow PDF转视频教程合集

本专题围绕VibeKnow的PDF转视频功能,讲解文件准备、内容解析、脚本生成、重点可视化及配音字幕检查方法。

0

2026.10.22

二狗PPT模板与视觉设计
二狗PPT模板与视觉设计

本专题介绍二狗PPT的职场模板、主题风格与页面版式,覆盖模板切换、色彩选择、内容匹配和正式汇报场景下的视觉优化方法。

0

2026.10.22

php漏洞修复方法
php漏洞修复方法

PHP漏洞聚合专题,持续整理PHP最新高危漏洞、CVE安全预警、受影响版本、自查命令及修复方案,覆盖PHP-FPM、Docker、Ubuntu与Linux服务器环境,帮助开发者快速完成漏洞排查、版本升级和安全加固。

20

2026.10.22

二狗PPT入门与基础操作
二狗PPT入门与基础操作

本专题整理二狗PPT从官网进入、输入主题、生成大纲到制作成稿的基础操作,帮助新手掌握AI一键生成职场PPT的完整流程。

0

2026.10.22

讯飞绘文AI配图与绘图模型合集
讯飞绘文AI配图与绘图模型合集

本专题讲解讯飞绘文AI配图与绘图2.0 Pro,覆盖提示词、画面比例、参考图、风格选择及图片优化,帮助用户制作匹配内容的视觉素材。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP8.0完全开发手册
ThinkPHP8.0完全开发手册

共0课时 | 0人学习

PHP安全与漏洞
PHP安全与漏洞

共12课时 | 2.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn