==================================== 玩玩云 - 登录验证码功能更新说明 ==================================== 更新时间:2025年11月21日 版本:v1.1.0 一、功能概述 ---------------------------------- 为"玩玩云"云存储系统添加了登录验证码功能,显著提升了系统的安全性。 核心特性: ✅ 密码输错2次后自动显示验证码 ✅ 前台和后台登录均支持 ✅ 验证码可点击刷新 ✅ 基于IP和用户名双重防护 ✅ 失败5次封锁30分钟 二、使用方法 ---------------------------------- 1. 正常登录流程: - 输入用户名和密码 - 点击"登录"按钮 - 如果密码正确,直接登录成功 2. 触发验证码流程: - 第1次密码错误:提示"用户名或密码错误" - 第2次密码错误:提示"用户名或密码错误" - 第3次尝试:自动显示验证码输入框 - 输入验证码和密码 - 点击"登录"按钮 3. 验证码操作: - 看不清?点击图片刷新验证码 - 验证码是4位纯数字 - 验证码有效期5分钟 三、技术实现 ---------------------------------- 后端改动: 1. 安装依赖:svg-captcha, express-session 2. 新增API:GET /api/captcha (生成验证码) 3. 修改API:POST /api/login (验证码验证) 4. 增强防爆破机制 前端改动: 1. 添加验证码显示区域 2. 添加验证码输入框 3. 实现自动触发逻辑 4. 支持点击刷新 四、文件清单 ---------------------------------- 修改的文件: backend/server.js - 后端主文件 backend/package.json - 依赖配置 frontend/app.html - 前端页面 frontend/app.js - 前端逻辑 新增的文件: CAPTCHA_FEATURE.md - 详细功能文档 CAPTCHA_README.md - 快速开始指南 test_captcha.sh - 测试脚本 更新说明_验证码功能.txt - 本文件 五、启动说明 ---------------------------------- 1. 安装依赖(如果尚未安装): cd backend npm install 2. 启动后端服务: cd backend node server.js 3. 访问系统: 打开浏览器访问 http://localhost:40001 六、测试方法 ---------------------------------- 方法1:浏览器手动测试 1. 访问登录页面 2. 输入任意用户名和错误密码 3. 连续点击"登录"按钮2次 4. 第3次尝试时应该看到验证码 方法2:自动化测试脚本 ./test_captcha.sh 七、配置调整(可选) ---------------------------------- 1. 修改验证码触发次数: 编辑 backend/server.js 第683行附近 const needCaptcha = ipFailures >= 2 || usernameFailures >= 2; 修改 >= 2 为你想要的次数 2. 修改防爆破参数: 编辑 backend/server.js 第394行附近 const loginLimiter = new RateLimiter({ maxAttempts: 5, // 最大失败次数 windowMs: 15 * 60 * 1000, // 15分钟 blockDuration: 30 * 60 * 1000 // 封锁30分钟 }); 3. 设置Session密钥(生产环境推荐): 编辑 backend/.env 文件 SESSION_SECRET=your-random-secret-key 八、安全建议 ---------------------------------- ✅ 已实现的安全措施: - 验证码采用SVG格式,防止OCR识别 - 验证码存储在服务器端Session - 验证码有5分钟有效期 - 基于IP和用户名双重防护 - 失败5次自动封锁30分钟 🔒 建议的额外措施: - 在生产环境设置强随机SESSION_SECRET - 启用HTTPS并设置COOKIE_SECURE=true - 定期检查登录日志 - 考虑添加登录通知功能 九、故障排查 ---------------------------------- 问题1:验证码不显示 解决: - 确认后端服务已启动 - 检查浏览器控制台错误 - 确认已输错密码至少2次 问题2:验证码一直错误 解决: - 刷新验证码重试 - 检查浏览器是否禁用Cookie - 清除浏览器缓存 问题3:验证码API 500错误 解决: - 检查依赖是否安装:npm list svg-captcha express-session - 重新安装:npm install - 查看后端日志 十、技术支持 ---------------------------------- 详细文档: - CAPTCHA_FEATURE.md - 完整功能说明和技术文档 - CAPTCHA_README.md - 快速入门指南 测试工具: - test_captcha.sh - 自动化测试脚本 遇到问题: 1. 查看后端日志 2. 检查浏览器控制台 3. 运行测试脚本 4. 查看详细文档 ==================================== 更新完成!享受更安全的云存储体验! ====================================