FileCodeBox Go 重写版 v2.5.6(安全审计修复版)

Go 1.27.1 (Gin+GORM) + Vue 3 文件快传服务:

- 安全审计全部修复(docs/security-audit-2026-09-05.md):
  bcrypt 密码哈希与自动升级、presign 直传服务端大小/内容校验、
  全局请求体上限、依赖升级(govulncheck 0 命中)、janitor 后台清理、
  管理端审计动作落库、/admin CORS 收紧、通知内容白名单净化、
  会话默认 7 天、限流缓存故障降级、robots.txt 端点等
- 前端:取件链接复制修复(不再重复拼接提取码)、markdown 净化器加固
- Redis 支持库号(FCB_REDIS_DB / redis://…/db URL)
- 文档:docs/api/* 与 openapi.yaml 同步最新行为(robots.txt、
  提码 5 位起、chunk 32MiB 上限、admin 审计动作等)

验证:gofmt/go vet/go test 全绿;二进制端到端冒烟通过
This commit is contained in:
2026-09-05 04:22:41 +08:00
commit 9686fe887a
173 changed files with 32455 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
# ===== FileCodeBox 部署环境变量示例 =====
# 复制为 .env 后按需修改;所有变量均有默认值。
# ---- 站点 ----
WEB_PORT=8466
# ---- 数据库(需求 ⑧)----
# 默认 SQLite:零依赖,无需任何下方 Postgres 变量(数据落 serverdata 卷 /app/data/filecodebox.db
FCB_DB_DRIVER=sqlite
FCB_DB_DSN=
# Postgres 模式(可选):先 `docker compose --profile postgres up -d --build`,再改为:
# FCB_DB_DRIVER=postgres
# FCB_DB_DSN=postgres://filecodebox:filecodebox@postgres:5432/filecodebox?sslmode=disable
# ---- Postgres(仅 --profile postgres 时使用;生产务必修改默认口令并启用 TLS)----
POSTGRES_USER=filecodebox
POSTGRES_PASSWORD=filecodebox
POSTGRES_DB=filecodebox
# ---- 存储引擎切换:local | s3 | webdav ----
FCB_STORAGE_ENGINE=local
# ---- 可信代理(生产必读,安全审计 L10)----
# 反代(nginx/caddy 等)后必须设为代理 IP/CIDR(逗号分隔),
# 否则限流按代理 IP 计数(全体用户共享一个限流桶)且审计 IP 失真。
# 示例:FCB_TRUSTED_PROXIES=172.18.0.0/16,10.0.0.5
FCB_TRUSTED_PROXIES=
# ---- 管理员自动初始化(可选,安全审计 L1)----
# 设置后服务首次启动即完成管理员初始化(≥8 位),消除 /setup 被抢占窗口;
# 初始化完成后建议移除该变量。留空则走 /setup 网页向导。
# FCB_ADMIN_PASSWORD=
# ---- 管理员会话有效期(秒,默认 7 天,可调 1~365 整天)----
# FCB_ADMIN_SESSION_EXPIRE=604800
# ---- 本地引擎 ----
# 容器内固定 /app/datacompose 已挂载 serverdata 卷
# FCB_LOCAL_STORAGE_PATH=/app/data
# ---- Redis(可选增强;留空=内存降级;启用服务用 --profile redis----
# FCB_REDIS_ADDR=redis:6379
# Redis 逻辑库号 0-15(默认 0);地址为 redis://…/N URL 形式时以 URL 内库号优先
# FCB_REDIS_DB=0
# ---- S3 引擎(FCB_STORAGE_ENGINE=s3 时必填 bucket/access/secret;服务用 --profile minio----
# 注意:minioadmin/minioadmin 仅为本机冒烟默认值,对外部署必须修改
# (并在 compose 中删除 minio 的 ports 发布或仅绑定 127.0.0.1
FCB_S3_ENDPOINT_URL=http://minio:9000
FCB_S3_BUCKET_NAME=filecodebox
FCB_S3_ACCESS_KEY_ID=minioadmin
FCB_S3_SECRET_ACCESS_KEY=minioadmin
FCB_S3_REGION_NAME=us-east-1
# FCB_S3_ADDRESSING_STYLE=auto
# ---- WebDAV 引擎(FCB_STORAGE_ENGINE=webdav 时必填 url;服务用 --profile webdav----
FCB_WEBDAV_URL=http://webdav:5000
FCB_WEBDAV_USERNAME=admin
FCB_WEBDAV_PASSWORD=admin123
FCB_WEBDAV_ROOT_PATH=filebox_storage