security: 全面生产安全加固与部署修复

后端安全:
- DEBUG 默认 True → False
- 彻底移除 AUTH_BYPASS 认证绕过
- 验证码不再明文打印到日志
- 上传接口增加大小限制(500MB/20MB/100MB)与魔数校验
- python-jose → PyJWT, 更新 requirements.lock/uv.lock
- Bandit 恢复关键规则(B104/B301/B305/B314/B324/B603/B607)
- 修复 5 处 try_except_pass, 15 处加 nosec 注释
- 启用 Bandit pre-commit 钩子

前端安全:
- 配置完整 CSP 策略
- 收紧 Capabilities(fs:allow-read-file → $RESOURCE/**)
- 移除硬编码 devToken
- 清理前端 TODO(美家卡智影命名统一)

部署修复:
- docker-compose.prod 增加 alembic 迁移步骤
- api + scheduler 增加 Redis 心跳健康检查
- Nginx 添加安全响应头
- Nginx client_max_body_size 100M → 500M
- .env.example 补充 UPLOAD_MAX_* 配置与安全注释

其他:
- /voice/upload 合并到 /upload/audio
- Rust 上传增加文件大小检查
- 清理 Rust 19 处 println! + 前端 21 处 console.info
- 修复 VideoCompose.tsx toast 未导入(已有bug)
This commit is contained in:
小鱼开发
2026-05-10 23:31:34 +08:00
parent 821f81b335
commit 95e55293c6
42 changed files with 275 additions and 286 deletions
+7 -1
View File
@@ -5,6 +5,7 @@
# === 基础配置 ===
APP_NAME=美家卡智影 API
APP_VERSION=0.1.0
# ⚠️ 生产环境必须设为 false
DEBUG=true
ENV=development
HOST=0.0.0.0
@@ -37,7 +38,6 @@ REDIS_DB=0
SECRET_KEY=dev-secret-key-change-me
ACCESS_TOKEN_EXPIRE_MINUTES=30
REFRESH_TOKEN_EXPIRE_DAYS=30
AUTH_BYPASS=false
ALGORITHM=HS256
# === CORS 配置 ===
@@ -73,6 +73,11 @@ WXPAY_APPID=your-wx-appid
WXPAY_API_KEY=your-api-key
WXPAY_NOTIFY_URL=https://your-domain.com/api/v1/points/recharge/notify
# === 文件上传限制(字节)===
UPLOAD_MAX_VIDEO_SIZE=524288000 # 500MB
UPLOAD_MAX_IMAGE_SIZE=20971520 # 20MB
UPLOAD_MAX_AUDIO_SIZE=104857600 # 100MB
# === B2M 短信平台 ===
# ⚠️ P0 必填 — 未配置时 SMS 降级为仅打印日志(开发可用,测试/生产不可用)
SMS_APP_ID=your-sms-app-id
@@ -81,4 +86,5 @@ SMS_BASE_URL=https://bjksmtn.b2m.cn/inter/sendSingleSMS
# SMS_EXTENDED_CODE= # 扩展码(选填)
# === 日志配置 ===
# 生产环境建议 INFO
LOG_LEVEL=DEBUG