fix: 修复 Cross-Review 发现的问题

This commit is contained in:
2026-03-09 16:07:11 +08:00
parent f86bb7043c
commit 7e04321614
2 changed files with 21 additions and 1 deletions
+8
View File
@@ -29,7 +29,15 @@ def cmd_record_event(args):
for item in args.metadata: for item in args.metadata:
if '=' in item: if '=' in item:
key, value = item.split('=', 1) key, value = item.split('=', 1)
# 白名单校验:只允许字母、数字、下划线、连字符、点、空格
import re
if not re.match(r'^[\w\-\. \u4e00-\u9fff]+$', value):
print(f"⚠️ 警告: metadata 值 '{value}' 包含不允许的字符,将被转义", file=sys.stderr)
# 转义特殊字符,只保留安全字符
value = re.sub(r'[^\w\-\. \u4e00-\u9fff]', '_', value)
metadata[key] = value metadata[key] = value
else:
print(f"⚠️ 警告: 无效的 metadata 格式 '{item}',应为 key=value 格式,已忽略", file=sys.stderr)
# 记录事件 # 记录事件
record_event( record_event(
+13 -1
View File
@@ -6,6 +6,7 @@ Cross-Debate 统计报告模块
import json import json
import os import os
import sys
import fcntl import fcntl
from datetime import datetime, timezone from datetime import datetime, timezone
from pathlib import Path from pathlib import Path
@@ -49,6 +50,12 @@ class StatsManager:
filtered[key] = '***REDACTED***' filtered[key] = '***REDACTED***'
elif isinstance(value, dict): elif isinstance(value, dict):
filtered[key] = self._filter_sensitive_data(value) filtered[key] = self._filter_sensitive_data(value)
elif isinstance(value, list):
# 处理列表中的字典元素
filtered[key] = [
self._filter_sensitive_data(item) if isinstance(item, dict) else item
for item in value
]
else: else:
filtered[key] = value filtered[key] = value
return filtered return filtered
@@ -75,7 +82,12 @@ class StatsManager:
# 获取共享锁(读锁) # 获取共享锁(读锁)
fcntl.flock(f.fileno(), fcntl.LOCK_SH) fcntl.flock(f.fileno(), fcntl.LOCK_SH)
try: try:
data = json.load(f) try:
data = json.load(f)
except json.JSONDecodeError as e:
# 文件损坏时返回空数据结构
print(f"⚠️ 警告: 统计文件损坏,将返回空数据: {e}", file=sys.stderr)
return {"events": []}
finally: finally:
# 释放锁 # 释放锁
fcntl.flock(f.fileno(), fcntl.LOCK_UN) fcntl.flock(f.fileno(), fcntl.LOCK_UN)