用途
php-yii-audit 用于对 Yii(通常指 Yii2)框架项目进行白盒静态安全审计,分析框架机制与配置踩坑,并将发现映射到通用漏洞类型体系(AUTH/CSRF/XSS/CFG/LOGIC 等)。
主要能力
审计重点覆盖以下方面:
- 访问控制:AccessControl filter、roles 规则、matchCallback 的使用。
- RBAC:user->can/can() 路径的鉴权完整性。
- CSRF:enableCsrfValidation 与 cookie validation。
- 输出编码:views 是否使用 Html::encode、HtmlPurifier,以及危险的原样输出。
- URL 与跳转:redirect/Url 生成是否受信任输入控制。
- 入参过滤:rules()、safeAttributes()、场景(scenario)是否导致 Mass Assignment。
使用方式
用户提供:
- source_path:Yii 项目根目录
可选:
- output_path:输出目录路径(默认 {source_path}_audit)
输出目录:
- {output_path}/framework_audit/
- yii_{timestamp}.md
审计流程要求
框架识别(必做):必须给出 Yii 识别证据点,不允许空口断言。证据包括:依赖证据(composer.json 包含 yiisoft/yii2 或相关组件)、入口证据(web/index.php 或 yii 入口脚本)、应用目录(controllers/、models/、views/)。
风险类型映射(必做):每条发现都必须写明通用类型码(AUTH / CSRF / XSS / CFG / LOGIC 等)与映射原因。
必审清单(必做:逐项检查并输出结果):
-
AccessControl 鉴权规则正确性(AUTH):定位并输出 behaviors() 中的 AccessControl 配置(rules、roles、matchCallback 与 action 覆盖范围);检查是否存在只依赖 matchCallback 的宽松模式;检查是否有自定义认证逻辑但未落到统一 filter。判定规则:有路径能绕过 AccessControl 或 rules 过宽,则输出 AUTH 风险。
-
RBAC/权限校验完整性(AUTH/LOGIC):定位并输出控制器/服务层的 user->can({value})、can() 或等价权限判断;检查对象归属校验(是否同时验证 owner_id/user_id 或资源的归属关系)。判定规则:若仅判断“用户有权限类型”,但未校验对象归属,输出 AUTH 或 LOGIC 风险。
-
CSRF(CSRF):定位并输出 enableCsrfValidation 与 cookie validation 设置;检查 token 接收字段与验证失败处理方式(是否早退)。
-
输出编码与 XSS(XSS):定位并输出 views 中是否存在原样输出(Html::encode 被绕过的情况、或使用 raw 类机制);检查模板中是否将用户输入直接拼接到 HTML 属性/JS/URL 中。
-
输入过滤与 Mass Assignment(LOGIC):定位并输出模型 rules()、safeAttributes()、scenarios() 的配置;检查是否存在 load($request->post()) 后直接保存,而敏感字段未被禁止。
可观测 PoC(必做:框架特效可观测验证框架):至少给出以下两类其一并写清观察点:
- AUTH:对疑似受保护 action,用低权限用户请求,观察响应差异或业务副作用。
- CSRF:对疑似受保护的状态变更 POST 请求,缺失 CSRF token,观察错误与是否仍成功执行。
PoC 输出要求:必须包含 controller/action 路由与参数字段;必须说明要观察的 HTTP 状态码与业务结果。
输出完整性检查(强制):输出包含 AccessControl/RBAC/CSRF/输出编码/Input filtering 检查结果;每条风险都有映射类型码 + 位置证据 + 可观测验证框架 + 修复建议。
适用场景
适用于对 Yii2 项目进行安全审计、代码审查、漏洞排查,尤其是需要检查访问控制、RBAC、CSRF、XSS 与 Mass Assignment 等框架相关安全问题的场景。
限制
资料未提供该工具的具体安装命令、运行命令、依赖环境、收费方式、平台支持范围及效果保证等信息,暂未提供。