Commit Graph

11 Commits

Author SHA1 Message Date
starmen1265 e22359a5f8 安全修复(High): event_type 和 mode 参数添加白名单校验
- 定义 ALLOWED_EVENT_TYPES 白名单
- 定义 ALLOWED_MODES 白名单
- record_event() 函数中验证参数合法性
- 防止注入恶意事件类型或模式
2026-03-09 15:18:59 +08:00
starmen1265 3b5f728efe 安全修复(High): 文件创建时设置权限 0o600
- 锁文件创建时设置权限 0o600
- 临时文件创建时设置权限 0o600
- 数据文件写入后确保权限为 0o600
- 防止未授权访问敏感统计数据
2026-03-09 15:18:22 +08:00
starmen1265 65ef23de5d 安全修复(Critical): clear_stats() 添加 ADMIN_TOKEN 身份验证
- 防止未授权清空统计数据
- 需要设置环境变量 ADMIN_TOKEN 才能执行清空操作
2026-03-09 15:17:38 +08:00
starmen1265 f9cc8bb82a fix(stats): 细化异常处理
- _acquire_lock(): 添加 OSError/IOError 异常处理和日志
- _release_lock(): 添加空值检查和异常捕获
- _load_stats_data():
  - 分离 JSONDecodeError、IOError/OSError 和其他异常
  - 添加详细的日志记录
- _atomic_write():
  - 分离 OSError/IOError 和 JSON 序列化异常
  - 清理临时文件时添加异常捕获
- 移除重复的 LOCK_FILE 定义
2026-03-09 14:52:32 +08:00
starmen1265 63f2df7f18 fix(stats): 将 print() 改为 logging
- 添加 logging 模块导入
- 创建 logger 实例
- 将错误输出从 print() 改为 logger.error()
- 保留 __main__ 测试代码中的 print()
2026-03-09 14:51:14 +08:00
starmen1265 5034374066 fix(stats): 添加事件数量限制(默认 10000)
- 添加 MAX_EVENTS 常量(默认 10000)
- record_event() 在事件数超过限制时移除最旧的事件
- 防止数据文件无限增长
2026-03-09 14:50:32 +08:00
starmen1265 e136939a25 fix(stats): 添加文件锁(fcntl.flock)防止并发竞态
- 添加 _acquire_lock() 和 _release_lock() 辅助函数
- _load_stats_data() 和 _atomic_write() 使用文件锁保护
- 使用独立的 .lock 文件作为锁
- 防止并发读写导致数据损坏
2026-03-09 14:50:03 +08:00
starmen1265 9b15766ab3 fix(stats): _load_stats_data() JSON 解析失败时备份损坏文件
- JSON 解析失败时将损坏文件重命名为 .corrupted.{timestamp}.bak
- 保留损坏文件以便后续分析和恢复
- 分离 JSONDecodeError 和 IOError 的处理逻辑
2026-03-09 14:49:12 +08:00
starmen1265 d26ac7a88c fix(stats): get_stats() 改用 .get() 访问字段
- 使用 .get() 安全访问 event 字段
- 为可能缺失的字段提供默认值
- 防止 KeyError 异常
2026-03-09 14:48:45 +08:00
starmen1265 e5304534e4 fix(stats): record_event() 添加 metadata 类型校验
- 如果 metadata 不是 dict 类型则抛出 TypeError
- 防止传入非法类型导致后续处理失败
2026-03-09 14:48:17 +08:00
starmen1265 3efe98e17d feat: 添加 Cross 模式统计报告功能
- 添加 stats.py 统计模块
- 添加 dev_workflow.py CLI 工具
- 实现 record_event() 记录事件
- 实现 get_stats() 生成报告
- 支持敏感数据自动过滤
- 使用原子写入保证数据安全
- 添加 README 文档
2026-03-09 14:44:04 +08:00