Commit Graph
27 Commits
Author SHA1 Message Date
19174616018andClaude Opus 4.5 de51e1b7c7 修复多项安全漏洞和Bug
1. 安全修复:
   - 修复密码重置接口用户枚举漏洞,统一返回消息防止信息泄露
   - 统一密码强度验证为8位以上且包含字母和数字
   - 添加第三方账号密码加密存储(Fernet对称加密)
   - 修复默认管理员弱密码问题,改用随机生成强密码
   - 修复管理员回复XSS漏洞,添加HTML转义
   - 将MD5哈希替换为SHA256

2. 并发Bug修复:
   - 修复日志缓存竞态条件,添加锁保护
   - 修复截图信号量配置变更后不生效问题

3. 其他改进:
   - 添加API参数类型验证和边界检查
   - 新增crypto_utils.py加密工具模块

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 19:14:14 +08:00
19174616018andClaude Opus 4.5 b9edc4aaa2 修复多项安全漏洞
安全修复清单:
1. 验证码改为图片方式返回,防止明文泄露
2. CORS配置从环境变量读取,不再使用通配符"*"
3. VIP API添加@admin_required装饰器,统一认证
4. 用户登录统一错误消息,防止用户枚举
5. IP限流不再信任X-Forwarded-For头,防止伪造绕过
6. 密码强度要求提升(8位+字母+数字)
7. 日志不���记录完整session/cookie内容,防止敏感信息泄露
8. XSS防护:日志输出和Bug反馈内容转义HTML
9. SQL注入防护:LIKE查询参数转义
10. 路径遍历防护:截图目录白名单验证
11. 验证码重放防护:验证前删除验证码
12. 数据库连接池健康检查
13. 正则DoS防护:限制数字匹配长度
14. Account类密码私有化,__repr__不暴露密码

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 17:53:48 +08:00
19174616018andClaude Opus 4.5 4d3e4a09fd 修复代码质量问题(Bug #20, #1, #2)
修复的Bug:
- Bug #20: 删除重复函数定义 (update_admin_username重复定义)
- Bug #1: 删除类型转换冗余 (APIBrowseResult->BrowseResult无意义转换)
- Bug #2: 统一时区处理

主要改进:
1. 删除重复函数:
   - 删除app.py:1023处重复的update_admin_username函数定义
   - 避免函数覆盖导致的潜在问题

2. 删除冗余类型转换:
   - APIBrowseResult和BrowseResult字段完全相同
   - 删除run_task中的冗余转换代码
   - 提升性能,减少维护成本

3. 统一时区处理:
   - 新增BEIJING_TZ常量和get_beijing_now()辅助函数
   - 替换所有分散的beijing_tz创建为统一函数调用
   - 删除重复的datetime/pytz导入
   - 涉及6处代码统一:
     * log_to_client - 日志时间戳
     * take_screenshot_for_account - 截图文件名
     * get_screenshots - 文件修改时间
     * run_scheduled_task - 定时任务星期检查
     * check_user_schedules - 用户定时任务检查
     * get_server_info_api - 服务器运行时长

影响:
- 提升代码质量和可维护性
- 统一时区处理,避免时间混淆
- 减少内存占用和CPU开销

受影响文件:
- app.py (所有修复)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 14:25:08 +08:00
19174616018andClaude Opus 4.5 6a905909d9 修复关键安全漏洞(Bug #19和Bug #13)
修复的Bug:
- Bug #19: 路径遍历漏洞
- Bug #13: 浏览器上下文竞态条件

主要改进:
1. 路径遍历防护:
   - /screenshots/<filename> 端点添加is_safe_path()验证
   - /static/<path:filename> 端点添加is_safe_path()验证
   - 防止攻击者通过../等序列访问系统文件

2. 浏览器资源并发保护:
   - PlaywrightAutomation类添加_lock线程锁
   - get_iframe_safe()方法使用锁保护main_page访问
   - close()方法使用锁保护资源释放
   - _cleanup_on_exit()使用非阻塞锁避免退出死锁
   - 解决TOCTOU(Time-of-Check-Time-of-Use)竞态条件

影响:
- 防止路径遍历攻击,保护系统文件安全
- 防止多线程环境下的浏览器资源竞争
- 提升系统安全性和稳定性

受影响文件:
- app.py (路径验证)
- playwright_automation.py (线程锁)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 14:12:01 +08:00
19174616018andClaude Opus 4.5 114a4107bb 修复所有资源泄漏问题(P0级bug)
修复的Bug:
- Bug #21: Playwright浏览器实例泄漏
- Bug #22: 数据库连接泄漏(已由连接池解决)
- Bug #23: 截图文件句柄泄漏
- Bug #24: 线程资源未清理
- Bug #25: requests.Session对象泄漏

主要改进:
1. PlaywrightAutomation类:
   - 添加atexit注册,确保进程退出时关闭浏览器
   - 添加__enter__/__exit__支持context manager
   - 添加_closed标志防止重复关闭
   - 添加_cleanup_on_exit静默清理方法

2. APIBrowser类:
   - 添加atexit注册,确保Session正确关闭
   - 添加__enter__/__exit__支持context manager
   - 添加_closed标志防止重复关闭

3. 截图功能增强:
   - 使用临时文件机制
   - 添加文件大小验证
   - 失败时自动清理临时文件
   - 确保不产生垃圾文件

4. 应用关闭清理:
   - 添加cleanup_on_exit()函数
   - 注册SIGINT/SIGTERM信号处理器
   - 停止所有运行中的任务
   - 等待线程优雅退出
   - 关闭浏览器线程池
   - 关闭数据库连接池

影响:
- 防止长期运行导致的内存泄漏
- 确保进程异常退出时正确清理资源
- 提升系统稳定性和可靠性

受影响文件:
- playwright_automation.py
- api_browser.py
- app.py

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 13:48:06 +08:00
19174616018andClaude Opus 4.5 795ff7f1a7 彻底修复移动端按钮溢出和布局问题
主要改进:
- 添加overflow-x: hidden防止水平滚动
- Header按钮缩小字体和padding,确保不溢出
- 工具栏改为垂直布局,按钮支持flex换行
- 所有按钮添加white-space: nowrap防止内部换行
- 账号卡片操作区域改为垂直布局
- 模态窗口按钮改为100%宽度垂直堆叠
- 表格容器添加横向滚动支持
- 优化所有flex容器的flex-wrap属性
- 减小移动端所有元素的padding和font-size
- 确保所有输入框和选择框width: 100%

受影响文件:
- templates/index.html - 全面优化移动端布局
- templates/admin.html - 全面优化管理后台移动端布局

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 13:21:17 +08:00
19174616018andClaude Opus 4.5 94e716b6b1 优化移动端UI布局,修复按钮和内容超出屏幕问题
主要改进:
- 优化header布局,支持flex-wrap防止内容溢出
- 改进工具栏和按钮组的响应式布局
- 优化表格在移动端的显示(添加横向滚动)
- 调整模态窗口在小屏幕上的尺寸和间距
- 优化表单输入框字体大小(防止iOS自动缩放)
- 改进统计卡片、导航栏等组件的移动端适配
- 为登录/注册页面添加移动端优化样式

受影响文件:
- templates/index.html - 用户主界面移动端优化
- templates/admin.html - 管理员界面移动端优化
- templates/login.html - 登录页面移动端优化
- templates/register.html - 注册页面移动端优化
- templates/admin_login.html - 管理员登录页面移动端优化

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 12:38:18 +08:00
19174616018andClaude Opus 4.5 e07544784c 🐛 修复定时任务执行耗时显示为0的问题
- 启动监控线程等待所有任务完成后再更新日志
- 通过参数传递避免闭包问题
- 耗时现在正确反映实际任务执行时间

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 22:09:30 +08:00
19174616018andClaude Opus 4.5 d811fc7c56 添加注册自动审核功能
- 系统配置新增:自动审核开关、每小时注册限制、赠送VIP天数
- 数据库:添加 auto_approve_enabled, auto_approve_hourly_limit, auto_approve_vip_days 字段
- 后端API:支持保存和读取自动审核配置
- 管理后台:新增注册自动审核配置区域(绿色背景)
- 注册逻辑:支持自动审核通过并赠送VIP

功能说明:
1. 启用自动审核后,新用户注册自动通过,无需管理员审批
2. 每小时注册限制防止恶意注册
3. 可配置注册赠送VIP天数(设为0则不赠送)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 21:42:28 +08:00
19174616018andClaude Opus 4.5 841ac94c4b 🔧 完善system_config初始化字段
- INSERT 语句补全所有字段,确保与 CREATE TABLE 定义一致

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 21:03:11 +08:00
19174616018andClaude Opus 4.5 fb56426a8e 🐛 修复截图并发数初始化遗漏字段
- 初始化system_config时添加max_screenshot_concurrent字段

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:59:03 +08:00
19174616018andClaude Opus 4.5 9f32d73f6c 🎨 减小右上角元素间距为8px
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:52:38 +08:00
19174616018andClaude Opus 4.5 c4fe9f9f72 🎨 统一右上角所有元素间距
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:48:28 +08:00
19174616018andClaude Opus 4.5 5cf5484942 🎨 统一右上角按钮间距
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:42:23 +08:00
19174616018andClaude Opus 4.5 c71ea2f2cf 🔧 修改密码按钮移至右上角
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:40:01 +08:00
19174616018andClaude Opus 4.5 3e8988896a 添加用户修改密码功能
- 左边栏添加修改密码按钮
- 添加修改密码弹窗
- 添加 /api/user/password API

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:37:27 +08:00
19174616018andClaude Opus 4.5 32a29e61e9 优化浏览器池和并发配置
1. 浏览器池改为按需启动模式
   - 启动时不创建浏览器,有截图任务时才启动
   - 空闲5分钟后自动关闭浏览器释放资源

2. 修复截图并发数保存问题
   - 修复database.py中缺少保存max_screenshot_concurrent的代码

3. 去掉并发数上限限制
   - 管理员可自由设置并发数,不再限制1-20/1-5

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:31:49 +08:00
19174616018andClaude Opus 4.5 7954aeaf59 添加定时任务日志管理功能
- 添加用户清空日志按钮
- 添加30天自动清理定时任务执行日志
- 简化日志API代码,移除调试日志

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:20:44 +08:00
19174616018andClaude Opus 4.5 9df2122fb5 🐛 修复定时任务日志状态显示
- 状态检查同时支持success和completed

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:15:05 +08:00
19174616018andClaude Opus 4.5 cd118f28db 🧹 清理更多调试日志
- 移除Socket连接/断开/错误日志
- 移除账号加载日志
- 移除定时任务时间标准化日志

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:13:31 +08:00
19174616018andClaude Opus 4.5 f3c6a4d704 🧹 清理调试日志
- 移除日志弹窗调试日志
- 移除openModal调试日志
- 移除账号API调试日志
- 移除账号加载调试日志

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:11:18 +08:00
19174616018andClaude Opus 4.5 c021f32146 🐛 修复日志弹窗无法显示问题
- 修复scheduleModal缺少关闭标签导致scheduleLogsModal被嵌套
- 移除多余的</div>标签

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:08:04 +08:00
19174616018andClaude Opus 4.5 df8d0d7c25 🐛 修复周日期选择器无法点击问题
- 移除CSS :has()选择器(兼容性问题)
- 改用JavaScript控制.selected类
- 添加点击事件处理器

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:04:59 +08:00
19174616018andClaude Opus 4.5 987c4f88e6 🔍 增强账号API诊断日志
添加更详细的日志输出,帮助排查问题

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:02:13 +08:00
19174616018andClaude Opus 4.5 ef747cfb5f 🔍 添加账号加载诊断日志
帮助排查容器重启后账号丢失的问题

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 19:55:56 +08:00
19174616018andClaude Opus 4.5 78a827c801 🔇 减少定时任务调试日志输出
- 移除每5秒的时间检查详细日志
- 移除星期/时间匹配的调试日志
- 移除账号ID类型和user_accounts内容的调试日志
- 保留关键的执行状态和错误日志

日志从45行减少到4行,降低服务器资源占用。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 19:45:33 +08:00
19174616018andClaude Opus 4.5 657634f028 🐛 修复定时任务日志和执行问题
- 修复日志按钮点击无反应(类型匹配和错误处理)
- 修复定时任务到时间不执行(时间格式标准化)
- 增强所有检查点的调试日志输出
- 改进今日执行检查逻辑(支持同一天不同时间执行)

Bug 1: 日志按钮完全没反应
- 将严格相等(===)改为宽松相等(==)避免类型不匹配
- 添加详细的错误日志和用户提示
- 添加容器元素存在性检查

Bug 2: 定时任务到时间不会被执行
- 标准化时间格式(8:00 -> 08:00)
- 增强所有检查点的日志输出(时间、星期、账号)
- 改进今日执行检查(同一天不同时间可再次执行)
- 前端添加时间格式验证和标准化

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 19:12:48 +08:00