修复12项安全漏洞和代码质量问题
安全修复: - 使用secrets替代random生成验证码,提升安全性 - 添加内存清理调度器,防止内存泄漏 - PIL缺失时返回503而非降级服务 - 改进会话安全配置,支持环境自动检测 - 密钥文件路径支持环境变量配置 Bug修复: - 改进异常处理,不再吞掉SystemExit/KeyboardInterrupt - 清理死代码(if False占位符) - 改进浏览器资源释放逻辑,使用try-finally确保关闭 - 重构数据库连接池归还逻辑,修复竞态条件 - 添加安全的JSON解析方法,处理损坏数据 - 日志级别默认值改为INFO - 提取魔法数字为可配置常量 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -32,6 +32,23 @@ class TaskCheckpoint:
|
||||
"""初始化(使用全局连接池)"""
|
||||
self._init_table()
|
||||
|
||||
def _safe_json_loads(self, data):
|
||||
"""安全的JSON解析,处理损坏或无效的数据
|
||||
|
||||
Args:
|
||||
data: JSON字符串或None
|
||||
|
||||
Returns:
|
||||
解析后的对象或None
|
||||
"""
|
||||
if not data:
|
||||
return None
|
||||
try:
|
||||
return json.loads(data)
|
||||
except (json.JSONDecodeError, TypeError, ValueError) as e:
|
||||
print(f"[警告] JSON解析失败: {e}, 数据: {data[:100] if isinstance(data, str) else data}")
|
||||
return None
|
||||
|
||||
def _init_table(self):
|
||||
"""初始化任务进度表"""
|
||||
with db_pool.get_db() as conn:
|
||||
@@ -260,7 +277,7 @@ class TaskCheckpoint:
|
||||
'max_retries': row[13],
|
||||
'last_error': row[14],
|
||||
'error_count': row[15],
|
||||
'checkpoint_data': json.loads(row[16]) if row[16] else None,
|
||||
'checkpoint_data': self._safe_json_loads(row[16]),
|
||||
'created_at': row[17],
|
||||
'updated_at': row[18],
|
||||
'completed_at': row[19]
|
||||
|
||||
Reference in New Issue
Block a user