筛选原则:只修复「正常请求路径不变、仅加固防护」的漏洞;不改权限体系、不改鉴权模型、不强制变更业务流程。
完成时间:2026-08-06
编译验证:mvn -pl fs-common,fs-framework,fs-service,fs-user-app,fs-company,fs-qw-api,fs-admin,fs-qwhook -am compile -DskipTests通过
| 类型 | 是否本轮修复 | 原因 |
|---|---|---|
| XXE 禁用 DTD | 已修 | 仅加强 XML 解析器特性,正常企微明文 XML 不受影响 |
| Runtime.exec → ProcessBuilder | 已修 | 命令参数相同,仅调用方式更安全 |
| 禁止 html/htm 上传/下载白名单 | 已修 | HIS 业务一般不需要上传可渲染 HTML;可阻断存储型 XSS |
| 剩余裸 uploadOSS | 已修 | 复用已有白名单工具,合法类型仍可用 |
| 安全响应头 nosniff | 已修 | 仅增加响应头,不影响业务数据 |
| 知识库上传文件名清洗 | 已修 | 仅过滤危险字符,中英文名仍可用 |
| Jackson DefaultTyping 收紧 | 未改 | 可能影响 Redis 历史缓存反序列化,风险大于收益,需单独评估 |
后台补 @PreAuthorize |
未改 | 依赖权限点配置,可能造成后台 403 |
fs-company-app /** permitAll |
未改 | 改动会冲击现有 @Login 拦截体系 |
| 跨租户 companyId 强制覆盖 | 未改 | 可能影响运营超管跨公司操作 |
| 文件 | 改动 |
|---|---|
新增 fs-common/.../XmlSecurityUtils.java |
统一禁用 DTD/外部实体 |
fs-qw-api/.../QwController.java |
使用 XmlSecurityUtils.newSafeDocumentBuilder() |
fs-service/.../qwApi/util/XMLParse.java |
补齐与官方安全示例一致的 feature |
影响:正常企微回调 XML 无 DOCTYPE,解析结果不变。
| 文件 | 改动 |
|---|---|
HuaweiVodServiceImpl / HuaweiObsServiceImpl |
Runtime.exec(拼接串) → ProcessBuilder 参数数组 |
AudioUtils(company / qwhook / qwhook-msg / qwhook-sop / fastgptApi) |
silk 编码改为 ProcessBuilder |
ProcessManager + LiveServiceImpl#buildFFmpegCommand |
改为 List<String> 传参,路径不再被空格拆开 |
影响:ffmpeg / silk 参数语义不变,路径含空格时反而更稳。
| 文件 | 改动 |
|---|---|
MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION |
移除 html/htm(保留 txt/文档/图片/视频/pdf) |
fs-qw-api/.../CommonController#uploadOSS |
接入 OssUploadSecurityUtils |
fs-user-app/.../CommonScrmController#uploadOSS |
接入 OssUploadSecurityUtils |
影响:若业务确有上传 .html 页面需求会被拒绝;常规图片/文档/音视频不受影响。
| 文件 | 改动 |
|---|---|
fs-framework/.../SecurityConfig.java |
增加 .headers().contentTypeOptions() |
影响:仅增加 X-Content-Type-Options: nosniff,不影响接口数据。
| 文件 | 改动 |
|---|---|
fs-admin / fs-company ChatDatasetFileController#getFileNameWithoutExtension |
白名单过滤危险字符,长度限制 50 |
影响:含特殊符号的文件名会被清洗,中英文与数字下划线不受影响。
Jackson activateDefaultTyping(LaissezFaire...)
全仓库大量 RedisConfig 使用,贸然改为白名单可能导致登录态/缓存读失败。建议单独做兼容验证后再改。
垂直越权补权限注解 / 强制 companyId
会改变后台可见数据范围或触发 403,需产品与权限表配合。
优惠券竞态加分布式锁
属逻辑增强,可能改变高并发领取时序,需业务确认。
下载接口去掉客户端 delete 参数
若前端依赖该参数清理临时文件,直接删除会改变行为;建议业务确认后改。
.html 被拒绝符合预期本轮只做了无感安全加固:XXE、命令执行方式、html 上传封禁、剩余 OSS 白名单、nosniff、文件名清洗。
不涉及鉴权模型、权限点、支付主流程、租户隔离策略,正常业务使用面基本不受影响。