Mirror Flowers 是一个开箱即用的代码安全审计工具,集成本地静态扫描(行级污点追踪 + AST)与 AI 验证,帮助你快速发现并定位高风险问题,并给出修复建议。
- 多语言:PHP / Python / JavaScript/TypeScript / Java
- 本地静态扫描:行级污点追踪 + AST 访问器,结果合并去重,误报更少
- AI 验证(可选):调用 OpenAI 兼容接口,对命中的可疑点给出证据、影响与修复建议
- 单文件/项目两种模式:
- 单文件:轻量、无需向量库加载
- 项目:支持
.zip/.tar.gz/.tgz上传,自动解压;可按需导入向量库做上下文辅助
- 并发加速:文件扫描、AI 验证都带并发与超时保护
- 一体化 UI:在
/ui直接上传文件/项目即可得到可视化结果(按漏洞类型分组、AI 建议就地展示) - 兼容多家 OpenAI 接口提供商:Z.AI / SiliconFlow / Moonshot(Kimi)等(自动规范化 base_url)
- 检测精度:
- PHP 新增行级污点追踪(支持变量先赋值再用于 include/require、SQL、文件操作等敏感点)
- AST 与行级结果合并去重,降低漏报/误报
- 项目扫描拓展到
.java/.jsp/.jspx
- AI 与前端:
/api/audit、/api/audit/project支持通过 multipart 按请求覆盖api_key/api_base- 修复建议路径规范化,前端稳定展示
- 兼容与性能:
- 向量库改为惰性初始化(单文件审计不拉取嵌入模型)
- 前端不再强制拼
/v1,由后端统一归一化api_base
- Python 3.9+
- 无需单独安装前端构建工具(内置静态页面)
pip install -r requirements.txt开发模式:
uvicorn backend.app:app --reload --host 127.0.0.1 --port 8000访问 UI:http://127.0.0.1:8000/ui
你可以通过环境变量或 API 配置。后端会自动规范化不同厂商的 base_url(兼容 Z.AI /api/paas/v4、SiliconFlow /v1、Moonshot/OpenAI /v1)。
方式 A · 环境变量(可选)
OPENAI_API_KEY=your_key
OPENAI_API_BASE=https://api.siliconflow.cn
OPENAI_MODEL=moonshotai/Kimi-K2-Instruct-0905 # 或任意可用模型方式 B · 通过接口配置(推荐)
# Z.AI(GLM-4.5 示例)
curl -X POST http://127.0.0.1:8000/api/configure \
-H 'Content-Type: application/json' \
-d '{"api_key":"YOUR_ZAI_API_KEY","api_base":"https://api.z.ai","model":"glm-4.5"}'
# SiliconFlow(DeepSeek/Kimi/GLM 示例)
curl -X POST http://127.0.0.1:8000/api/configure \
-H 'Content-Type: application/json' \
-d '{"api_key":"YOUR_SF_KEY","api_base":"https://api.siliconflow.cn","model":"deepseek-ai/DeepSeek-R1"}'
# Moonshot / Kimi(K2 示例)
curl -X POST http://127.0.0.1:8000/api/configure \
-H 'Content-Type: application/json' \
-d '{"api_key":"YOUR_MOONSHOT_KEY","api_base":"https://api.moonshot.cn","model":"moonshotai/Kimi-K2-Instruct-0905"}'注:UI 中更新配置同样生效;你也可以在上传时以 multipart 字段临时覆盖
api_key/api_base。
- 打开
http://127.0.0.1:8000/ui - 在“API 配置”中填入 Key / Base / 模型(或使用已保存配置)
- 选择“单文件审计”或“项目文件夹审计”并上传
- 查看“审计摘要”“问题(按类型分组)”“AI 建议”
- 单文件审计
curl -X POST http://127.0.0.1:8000/api/audit \
-F file=@/path/to/file.php \
-F api_key=YOUR_KEY \
-F api_base=https://api.siliconflow.cn- 项目审计(支持 .zip/.tar.gz/.tgz)
curl -X POST http://127.0.0.1:8000/api/audit/project \
-F project=@/path/to/project.zip \
-F api_key=YOUR_KEY \
-F api_base=https://api.siliconflow.cnSCAN_CONCURRENCY(默认 6):文件扫描并发度AI_CONCURRENCY(默认 3):AI 验证并发度AI_TIMEOUT_SEC(默认 120):单条 AI 验证超时VECTOR_BATCH_SIZE(默认 300):向量导入批大小(项目模式)
- PHP:文件包含(include/require)、命令执行(system/exec 等)、SQL 注入(含拼接启发式)、XSS、上传风险、弱哈希(md5/sha1)、不安全反序列化、会话固定、参数污染($_REQUEST)、IDOR 启发式
- Python:命令执行(os/subprocess/eval/exec)、SQL 注入(execute 拼接)、路径遍历、不安全反序列化(pickle/yaml)
- JS/TS:危险函数(eval/Function/document.write 等)、DOM XSS、原型污染、不安全随机数
- Java:常见 SQL 拼接、命令执行(Runtime.exec/ProcessBuilder)、XXE/HQL 风险等(启发式)
说明:项目级别还支持(可选)向量库导入,用于相似代码与上下文检索;单文件模式不会加载嵌入模型,启动更快。
GET /health健康检查GET /api/models拉取可用模型(按提供商自动规范化 base_url)POST /api/configure更新 Key/Base/Model(JSON)POST /api/audit单文件审计(multipart:file,可选api_key/api_base)POST /api/audit/project项目审计(multipart:project,可选api_key/api_base)GET /ui前端页面
- 生产建议使用多 worker:
uvicorn backend.app:app --host 0.0.0.0 --port 8000 --workers 2- 根据机器与配额适当调高
SCAN_CONCURRENCY、AI_CONCURRENCY,并观察资源与速率限制
- 首次运行下载嵌入模型较慢?
- 仅项目模式导入向量库会触发下载;单文件模式默认不会下载/加载嵌入模型
- Windows 上出现 HuggingFace symlink 警告?
- 可忽略;或以管理员/开发者模式运行
/api/models拉取失败?- 检查
api_key/api_base是否正确;无需在前端拼/v1,后端会统一规范化
- 检查
如果你需要进一步扩展更多语言/框架规则,或接入其它 OpenAI 兼容平台,欢迎提交 Issue / PR。