安企CMS - AnQiCMS v3.6.6 更新日志(合并 v3.6.5)
发布于 2026年10月08日
本篇合并 v3.6.5(2026-10-07)与 v3.6.6(2026-10-08)两个版本的更新内容。其中包含两项高危安全修复,建议所有站点尽快升级。
🔒 安全修复
- 列表排序参数可被注入:模板与接口的
order排序参数过去允许一定程度的表达式写法,存在被构造出恶意查询、进而拖取数据库内容(含管理员密码哈希)的风险。现已改为严格的字段名白名单:只接受真实列名、表名.列名(可带反引号)与asc/desc,随机排序RAND()单独保留,其余一律丢弃并回落到默认排序。 - 站点间跳转登录的凭证可被伪造:多站点跳转登录的签名原为「密码哈希 + 调用方自填随机串」,随机串可反复自造、票据永不过期,也不校验账号状态与错误次数——密码哈希一旦泄露即等于长期免密登录。现改为服务端签发的一次性票据:密钥换成站点自身的 TokenSecret,有效期 120 秒、使用一次即失效,且不允许被签发成长期凭证;同时补上账号状态检查、与密码登录共用的 IP 错误锁定,并如实记录登录时间。
- ⚠️ 升级后请务必完成两件事:管理员凭证中没有吊销字段,若站点曾被入侵,仅升级不足以清除攻击者已经拿到的会话。请一并轮换各站点的 TokenSecret(
websites.token_secret)并修改全部管理员密码。 - 接口回显敏感配置:修复站点详情接口回显数据库密码、API 暴露 SMTP 授权码两处问题。
✨ 新增功能
- MCP 工具层按「意图」重建:工具面由原来的「能力(cap)」重构为意图目录,工具数量与暴露面大幅收敛,调用目标更明确、越权面更小。
- 回合级批量审批:同一回合内的多个写操作合并为一次确认,不再逐条打断;读操作不打扰,敏感路径仍逐次确认。
- 邮件订阅:新增站点邮件订阅能力,支持订阅者管理与邮件群发,群发时带进度上报。
- 留言列表查询:新增留言列表工具,便于直接查询站点留言。
- 附件标签与直传:内容/模板支持 attachment 附件标签;MCP 附件上传支持 base64 图片直传。
- 敏感词按关键词替换:敏感词不再只能过滤,支持按关键词替换。
- 备份能力扩充:站点备份/还原纳入静态文件,模板备份覆盖更多数据表。
- 模板与检索增强:
json过滤器新增 encode / decode;内置文件搜索支持**递归通配;留言导出增加创建时间、IP、来源(Referer)。
⚡ 功能优化
- 程序化更新支持 PATCH 语义:更新文档/分类等内容时只覆盖你传入的字段,未传字段自动沿用原值,不再被清空——批量改标题、改描述更安全。
- 工具暴露面收口:收敛 MCP 工具暴露面,robots 相关迁移至运维域并补上开放门禁;能力授权范围改为自动过期,并明确其为全局作用域。
- 接口契约加固:重建并内嵌 API 目录、强化路由校验;统一结果为标准信封结构并保留分页字段;对忽略部分字段写入的接口回填字段。
- 内置技能对齐实际能力:技能改为调用当前意图名,历史工具名自动映射;补充「行动前先核实存在性声明」等使用指引。
- 附件分类合并:移除 attachmentCategory,统一使用 category 作为附件分类。
- 优化模板加载逻辑;完善邮件通知流程与支付处理;
system标签增加兼容字段名;调整订阅表 email 列长度;更新 i18n、依赖与 README。
🐛 问题修复
- 调用被拒绝时看不到原因:此前受限调用只报「调用未完成」,中文的拒绝理由与下一步指引现在随结果一并返回,调用方可直接读到该怎么做。
- POST 空 body 导致 panic:POST 接口收到空请求体不再崩溃;从 panic 恢复时也会写出可读的响应内容。
- 删除不存在记录误报成功:删除一条不存在的记录不再返回成功。
- 文档查询/更新静默数据损坏:修复文档查询与更新路径中的数据损坏问题。
- HTML 缓存状态空指针:修复缓存状态跟踪中的崩溃。
- robots.txt 输出错误:修复内容中的百分号被误当作格式化符解析。
- 翻译空输入:翻译在发起网络请求前先拒绝空输入。
- 文件工具错误标记:MCP 文件工具失败时正确标记为错误,并补齐缺失的拒绝文案。
- 修复标签 url_token 出错、城市站模板构建缓存报错、友链结构错误。
- 修复 LLMs 排除分类不生效、敏感词保存后不立即生效、
sep字段无法保存。 - 补齐 archives 表缺失的 favorite_count 字段。