文件: lib/services/api_service_wrapper.dart:111-119
问题: ApiServiceWrapper.init() 给 _dio 加的 LogInterceptor 设了 requestBody: true:
_dio.interceptors.add(LogInterceptor(
requestBody: true,
responseBody: false,
logPrint: (obj) => LoggerService.instance.d('[API] $obj', ...),
));
为什么是质量/隐私问题:
- requestBody 会在每条 API 请求日志里序列化完整 body。客户端涉及 body 的接口至少包括:
- POST
/api/text2img/generate —— 用户 prompt / negativePrompt;
- POST
/api/image-to-video/generate —— 用户 prompt + 上传图片的 multipart(base64 字节);
- POST
/api/backup/upload —— 用户整库备份 .db 文件(multipart 路径形式);
- POST
/api/logs/upload —— 本来就用于上报日志,log_reporter_service 又走自己的 Dio,没被这个 interceptor 影响。
- 这些 prompt 包含用户阅读偏好、创作意图、角色设定等敏感上下文;
- 同时日志通过
LogReporterService 上报到自配后端,理论上任何 backend_host 配置都会把这些 prompt 同步带过去;
- 当 release 模式下 log level 被调成 debug 用于排查时,等于把用户输入悄悄发出去。
修复建议: 至少对 text2img/image-to-video 两条路径排除 body 记录(基于 path 前缀过滤);最稳妥是把 requestBody 改成 false,调试时通过单独的 debugPrint/临时开关打开。
忽略指南:在 lib/services/api_service_wrapper.dart:111 添加注释 // cr-ignore <CR_IGNORE_IID_HASH>: <你的理由>,下次审查会自动关闭。
文件: lib/services/api_service_wrapper.dart:111-119
问题: ApiServiceWrapper.init() 给 _dio 加的 LogInterceptor 设了
requestBody: true:为什么是质量/隐私问题:
/api/text2img/generate—— 用户 prompt / negativePrompt;/api/image-to-video/generate—— 用户 prompt + 上传图片的 multipart(base64 字节);/api/backup/upload—— 用户整库备份 .db 文件(multipart 路径形式);/api/logs/upload—— 本来就用于上报日志,log_reporter_service 又走自己的 Dio,没被这个 interceptor 影响。LogReporterService上报到自配后端,理论上任何 backend_host 配置都会把这些 prompt 同步带过去;修复建议: 至少对 text2img/image-to-video 两条路径排除 body 记录(基于 path 前缀过滤);最稳妥是把 requestBody 改成 false,调试时通过单独的 debugPrint/临时开关打开。
忽略指南:在
lib/services/api_service_wrapper.dart:111添加注释// cr-ignore <CR_IGNORE_IID_HASH>: <你的理由>,下次审查会自动关闭。