fix(security): 修复信任代理和HTTPS检测的安全漏洞

## 问题修复

1. **trust proxy 配置安全加固**
   - 默认改为 false(不信任任何代理)
   - 支持多种安全配置:数字跳数、loopback、IP/CIDR段
   - 当配置为 true 时输出安全警告

2. **HTTPS 检测基于可信代理链**
   - 使用 req.secure 替代直接读取 x-forwarded-proto
   - Express 会根据 trust proxy 配置判断是否采信代理头
   - 防止客户端伪造协议头绕过 HTTPS 强制

3. **客户端 IP 获取安全加固**
   - 使用 req.ip 替代直接读取 X-Forwarded-For
   - Express 会根据 trust proxy 配置正确处理代理链
   - 防止客户端伪造 IP 绕过限流

4. **健康检测增加安全警告**
   - trust proxy = true 时标记为严重安全问题
   - 提示管理员配置更安全的代理信任策略

5. **安装脚本优化**
   - 默认配置 TRUST_PROXY=1(单层Nginx场景)
   - 添加详细的配置说明和安全警告

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-27 19:42:25 +08:00
parent 1dde17bb04
commit 15ea15518c
2 changed files with 93 additions and 40 deletions

View File

@@ -2180,6 +2180,16 @@ ALLOWED_ORIGINS=${ALLOWED_ORIGINS_VALUE}
# HTTPS 环境必须设置为 true
COOKIE_SECURE=${COOKIE_SECURE_VALUE}
# 信任代理配置(重要安全配置)
# 在 Nginx/CDN 后部署时必须配置,否则无法正确识别客户端 IP 和协议
# 配置选项:
# - false: 不信任代理(直接暴露,默认值)
# - 1: 信任前 1 跳代理(单层 Nginx推荐
# - 2: 信任前 2 跳代理CDN + Nginx
# - loopback: 仅信任本地回环地址
# 警告:不要设置为 true这会信任所有代理存在 IP/协议伪造风险!
TRUST_PROXY=1
# 公开端口nginx监听的端口用于生成分享链接
# 如果使用标准端口(80/443)或未配置,分享链接将不包含端口号
PUBLIC_PORT=${HTTP_PORT}