修复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:
@@ -55,11 +55,14 @@ class Config:
|
||||
SECRET_KEY = get_secret_key()
|
||||
|
||||
# ==================== 会话安全配置 ====================
|
||||
# Bug fix: 生产环境安全警告
|
||||
SESSION_COOKIE_SECURE = os.environ.get('SESSION_COOKIE_SECURE', 'False').lower() == 'true'
|
||||
# 安全修复: 根据环境自动选择安全配置
|
||||
# 生产环境(FLASK_ENV=production)时自动启用更严格的安全设置
|
||||
_is_production = os.environ.get('FLASK_ENV', 'production') == 'production'
|
||||
_force_secure = os.environ.get('SESSION_COOKIE_SECURE', '').lower() == 'true'
|
||||
SESSION_COOKIE_SECURE = _force_secure or (_is_production and os.environ.get('HTTPS_ENABLED', 'false').lower() == 'true')
|
||||
SESSION_COOKIE_HTTPONLY = True # 防止XSS攻击
|
||||
# SameSite配置:HTTP环境使用Lax,HTTPS环境使用None
|
||||
SESSION_COOKIE_SAMESITE = 'None' if os.environ.get('SESSION_COOKIE_SECURE', 'False').lower() == 'true' else 'Lax'
|
||||
# SameSite配置:HTTPS环境使用None,HTTP环境使用Lax
|
||||
SESSION_COOKIE_SAMESITE = 'None' if SESSION_COOKIE_SECURE else 'Lax'
|
||||
# 自定义cookie名称,避免与其他应用冲突
|
||||
SESSION_COOKIE_NAME = os.environ.get('SESSION_COOKIE_NAME', 'zsglpt_session')
|
||||
# Cookie路径,确保整个应用都能访问
|
||||
@@ -124,7 +127,8 @@ class Config:
|
||||
SOCKETIO_CORS_ALLOWED_ORIGINS = os.environ.get('SOCKETIO_CORS_ALLOWED_ORIGINS', '*')
|
||||
|
||||
# ==================== 日志配置 ====================
|
||||
LOG_LEVEL = os.environ.get('LOG_LEVEL', 'DEBUG')
|
||||
# 安全修复: 生产环境默认使用INFO级别,避免泄露敏感调试信息
|
||||
LOG_LEVEL = os.environ.get('LOG_LEVEL', 'INFO')
|
||||
LOG_FILE = os.environ.get('LOG_FILE', 'logs/app.log')
|
||||
LOG_MAX_BYTES = int(os.environ.get('LOG_MAX_BYTES', '10485760')) # 10MB
|
||||
LOG_BACKUP_COUNT = int(os.environ.get('LOG_BACKUP_COUNT', '5'))
|
||||
|
||||
Reference in New Issue
Block a user