用途:审查与加固 Frappe 框架中通过 @frappe.whitelist() 暴露的 API 端点,防止因缺乏权限校验而出现安全漏洞。
主要能力:识别常见问题,包括缺少角色校验(任意已认证用户可访问)、误用 frappe.get_all 绕过权限、未做文档权限检查、SQL 注入与非参数化查询、无限制的数据暴露。提供基于 AST 的扫描脚本自动发现所有 @frappe.whitelist() 函数,记录函数名、位置、参数与检测到的安全模式,生成并更新 docs/api-review.yaml,并在重新扫描时保留人工审查备注,输出汇总统计。
使用方式:进入技能脚本目录后运行扫描命令,例如 cd .github/skills/api-reviewer/scripts 再执行 python3 scan_api_endpoints.py --path /path/to/app。随后按 YAML 中每个端点逐项核查角色限制、权限调用、查询安全与输入校验,并在 YAML 中标注 reviewed 与 notes。常见修复包括添加 frappe.only_for("Role")、访问文档前调用 frappe.has_permission()、将 frappe.get_all 换成 frappe.get_list、对 SQL 参数化。脚本会自动检测 has_frappe_only_for、has_frappe_get_list、has_frappe_has_permission、has_permission_check 等标志,对值为 false 的端点应重点复核。
适用场景:Frappe 应用上线前安全审计、新增功能后的定期安全监控、针对特定端点的定向代码审查。
限制:该技能依赖人工判断与逐项复核,扫描结果不能替代实际测试;是否适用于其他框架、具体版本兼容性及完整价格信息暂未提供。