修复37项安全漏洞和Bug
高危修复: - app.py: 添加ip_rate_limit_lock线程锁保护IP限流字典 - app.py: 添加validate_ip_port()验证代理IP/端口范围 - database.py: SQL字段名白名单验证防止注入 - playwright_automation.py: 改进浏览器进程强制清理逻辑 中危修复: - database.py: 统一时区处理函数get_cst_now() - database.py: 消除循环导入,移动app_security导入到顶部 - playwright_automation.py: 所有bare except改为except Exception - app_config.py: dotenv导入失败警告+安全配置检查 - db_pool.py: 添加详细异常堆栈日志 - app_security.py: 用户名过滤零宽字符 - database.py: delete_old_task_logs分批删除避免锁表 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -10,6 +10,7 @@ from datetime import timedelta
|
||||
from pathlib import Path
|
||||
|
||||
# 尝试加载.env文件(如果存在)
|
||||
# Bug fix: 添加警告日志,避免静默失败
|
||||
try:
|
||||
from dotenv import load_dotenv
|
||||
env_path = Path(__file__).parent / '.env'
|
||||
@@ -17,8 +18,9 @@ try:
|
||||
load_dotenv(dotenv_path=env_path)
|
||||
print(f"✓ 已加载环境变量文件: {env_path}")
|
||||
except ImportError:
|
||||
# python-dotenv未安装,跳过
|
||||
pass
|
||||
# python-dotenv未安装,记录警告
|
||||
import sys
|
||||
print("⚠ 警告: python-dotenv未安装,将不会加载.env文件。如需使用.env文件,请运行: pip install python-dotenv", file=sys.stderr)
|
||||
|
||||
|
||||
# 常量定义
|
||||
@@ -53,6 +55,7 @@ class Config:
|
||||
SECRET_KEY = get_secret_key()
|
||||
|
||||
# ==================== 会话安全配置 ====================
|
||||
# Bug fix: 生产环境安全警告
|
||||
SESSION_COOKIE_SECURE = os.environ.get('SESSION_COOKIE_SECURE', 'False').lower() == 'true'
|
||||
SESSION_COOKIE_HTTPONLY = True # 防止XSS攻击
|
||||
# SameSite配置:HTTP环境使用Lax,HTTPS环境使用None
|
||||
@@ -63,6 +66,24 @@ class Config:
|
||||
SESSION_COOKIE_PATH = '/'
|
||||
PERMANENT_SESSION_LIFETIME = timedelta(hours=int(os.environ.get('SESSION_LIFETIME_HOURS', '24')))
|
||||
|
||||
# 安全警告检查
|
||||
@classmethod
|
||||
def check_security_warnings(cls):
|
||||
"""检查安全配置,输出警告"""
|
||||
import sys
|
||||
warnings = []
|
||||
env = os.environ.get('FLASK_ENV', 'production')
|
||||
|
||||
if env == 'production':
|
||||
if not cls.SESSION_COOKIE_SECURE:
|
||||
warnings.append("SESSION_COOKIE_SECURE=False: 生产环境建议启用HTTPS并设置SESSION_COOKIE_SECURE=true")
|
||||
|
||||
if warnings:
|
||||
print("\n⚠ 安全配置警告:", file=sys.stderr)
|
||||
for w in warnings:
|
||||
print(f" - {w}", file=sys.stderr)
|
||||
print("", file=sys.stderr)
|
||||
|
||||
# ==================== 数据库配置 ====================
|
||||
DB_FILE = os.environ.get('DB_FILE', 'data/app_data.db')
|
||||
DB_POOL_SIZE = int(os.environ.get('DB_POOL_SIZE', '5'))
|
||||
|
||||
Reference in New Issue
Block a user