从 README 拆出来的一节,内容不变;另见 安全审计报告。 这里讲的是本项目的安全设计,不是漏洞上报流程(那属于仓库的 SECURITY 政策,需要时另建)。
- 网关密钥仅存 SHA-256 哈希,明文只在创建时返回一次
- 管理端密码使用 PBKDF2-SHA256(26 万次迭代)加盐存储
- 会话使用 HttpOnly + SameSite=Lax 签名 Cookie,生产环境自动启用
Secure - 同 IP 登录失败 5 次锁定 10 分钟
- 所有文件操作做路径穿越校验
- 真实 IP 取自反代覆盖写入的
X-Real-IP(X-Forwarded-For首段可伪造), 且只在 TCP 对端属于可信代理网段时才采信;默认可信网段只有回环 (127.0.0.0/8、::1/128)。反代在另一台机器 / CDN 回源时,用WB_TRUSTED_PROXY_CIDRS显式添加,否则同网段的任意主机都能伪造来源 IP - 登录失败按 IP + 用户名双维度锁定,防单机与换 IP 的分布式爆破
- 管理面支持作用域化 API Token(只读 / 管理员,可吊销、可过期,库中仅存哈希、 全程审计),供脚本 / CI 免登录调用;高危接口与令牌管理本身只接受会话登录, 令牌泄露也无法提权或自助持久化(见 docs/api-tokens.md)
- 生产环境默认关闭
/docs、/openapi.json(WB_ENABLE_DOCS=1开启) - 网关限制请求体大小(8 MiB)与每密钥调用频率(默认 120 次/分钟)
- 已配置 CSP、
X-Frame-Options、X-Content-Type-Options等安全响应头 users.json、data/*.db、.env、账号授权文件均已在.gitignore中排除- 更新链路:发布包必须通过发布页 sha256 校验才安装(拿不到摘要默认拒绝,
Windows 更新器需显式
-AllowUnverified才放行);包先解压到临时目录并校验 关键产物,再整体替换,失败回滚;更新日志中的代理凭据会打码,只读账号看不到日志 - 审计与任务日志有保留上限(审计 2 万行、任务日志 90 天、小时统计 90 天), 避免长期运行或未认证探测把库撑大
完整审查结论见 安全审查报告(含已修复的高危问题与验证证据)。
- 用量按本地时区归日(写入、回填、展示统一口径)。历史上写入用本地、 回填用 UTC,会在 UTC+8 的机器上把凌晨的调用算成两天;如你的数据受此影响, 可在「用量 → 重建统计」以请求日志为准重建一次
- 改掉初始密码,不要沿用部署脚本中的默认值
- 务必经 HTTPS 访问:7863 / 7864 建议只监听
127.0.0.1,由反向代理对外 - 如需前置 CDN,请把
WB_TRUSTED_PROXY_HOPS设为 CDN + 反代的层数 - 发现问题请走私密渠道, 不要公开提交 Issue
⚠️ 公网暴露必须启用 HTTPS,否则会话 Cookie 与密码可被中间人窃取。 建议再叠加 1Panel IP 白名单或 Cloudflare Access 加固。