feat: 修复CORS安全漏洞 + 升级主页设计

🔒 安全修复:
- 修复分享链接HTTP/HTTPS协议识别问题
- 自动配置CORS安全策略(根据部署模式)
- 自动配置Cookie安全设置(HTTPS环境)
- 移除不安全的默认CORS配置

 功能改进:
- install.sh: 升级create_env_file()函数,智能配置CORS
  * 域名+HTTPS模式: ALLOWED_ORIGINS=https://domain
  * 域名+HTTP模式: ALLOWED_ORIGINS=http://domain
  * IP模式: 留空并显示安全警告
- backend/server.js: 添加getProtocol()函数,正确识别HTTPS
- backend/.env.example: 完全重写,添加详细的CORS配置说明

🎨 主页升级:
- frontend/index.html: 全新现代化设计
  * 渐变背景+动画效果
  * 9大功能特性展示
  * 8项技术栈展示
  * 完美响应式支持

📝 修改文件:
- backend/server.js (第63-83行, 1255行, 1282行)
- install.sh (第2108-2195行)
- backend/.env.example (完全重写)
- frontend/index.html (完全重写)

🔗 相关问题:
- 修复CORS允许任意域名访问的安全漏洞
- 修复分享链接使用HTTP的问题
- 解决Cookie在HTTP环境下的安全隐患

💡 向后兼容:
- 已部署项目可选择性升级
- 手动添加ALLOWED_ORIGINS配置即可生效

🎉 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-13 21:36:49 +08:00
parent cc3d0d8494
commit c8f3ab5881
4 changed files with 1057 additions and 110 deletions

View File

@@ -1,28 +1,96 @@
# ============================================
# 玩玩云 - 环境配置文件示例
# ============================================
#
# 使用说明:
# 1. 复制此文件为 .env
# 2. 根据实际情况修改配置值
# 3. ⚠️ 生产环境必须修改默认密码和密钥
#
# ============================================
# 服务器配置
# ============================================
# 服务端口
PORT=40001
# 运行环境production 或 development
NODE_ENV=production
# JWT安全密钥 (必须设置!使用随机字符串)
# 生成方法: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
JWT_SECRET=your-secret-key-change-in-production-PLEASE-CHANGE-THIS
# 公开访问端口nginx监听的端口用于生成分享链接
# 标准端口(80/443)可不配置
PUBLIC_PORT=80
# 管理员账号配置
# ============================================
# 安全配置
# ============================================
# JWT密钥必须修改
# 生成方法: openssl rand -base64 32
JWT_SECRET=your-secret-key-PLEASE-CHANGE-THIS-IN-PRODUCTION
# 管理员账号配置(首次启动时创建)
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin123
# 存储根目录(本地存储模式)
STORAGE_ROOT=/app/storage
# ============================================
# CORS 跨域配置(重要!)
# ============================================
# CORS允许的来源多个用逗号分隔* 表示允许所有)
# 生产环境建议设置为具体域名,例如: https://yourdomain.com,https://www.yourdomain.com
ALLOWED_ORIGINS=*
# 允许访问的前端域名
#
# 格式说明:
# - 单个域名: https://yourdomain.com
# - 多个域名: https://domain1.com,https://domain2.com
# - 开发环境: 留空或设置为 * (不安全,仅开发使用)
#
# ⚠️ 生产环境安全要求:
# 1. 必须配置具体的域名,不要使用 *
# 2. 必须包含协议 (http:// 或 https://)
# 3. 如果使用非标准端口,需要包含端口号
#
# 示例:
# ALLOWED_ORIGINS=https://pan.example.com
# ALLOWED_ORIGINS=https://pan.example.com,https://admin.example.com
# ALLOWED_ORIGINS=http://localhost:8080 # 开发环境
#
ALLOWED_ORIGINS=
# Cookie安全配置
# 如果使用HTTPS设置为true
# Cookie 安全配置
# 使用 HTTPS 时必须设置为 true
# HTTP 环境设置为 false
COOKIE_SECURE=false
# FTP服务器配置可选用户可在界面配置
FTP_HOST=your-ftp-host.com
FTP_PORT=21
FTP_USER=your-username
FTP_PASSWORD=your-password
# ============================================
# 存储配置
# ============================================
# 数据库路径
DATABASE_PATH=./data/database.db
# 本地存储根目录(本地存储模式使用)
STORAGE_ROOT=./storage
# ============================================
# SFTP 配置(可选)
# ============================================
#
# 说明: 用户可以在 Web 界面配置自己的 SFTP 服务器
# 此处配置仅作为全局默认值(通常不需要配置)
#
# FTP_HOST=your-ftp-host.com
# FTP_PORT=22
# FTP_USER=your-username
# FTP_PASSWORD=your-password
# ============================================
# 开发调试配置
# ============================================
# 日志级别 (error, warn, info, debug)
# LOG_LEVEL=info
# 是否启用调试模式
# DEBUG=false