Skip to content

Latest commit

 

History

History
48 lines (39 loc) · 3.15 KB

security-notes.md

File metadata and controls

48 lines (39 loc) · 3.15 KB

安全说明(笔记)

从 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 的机器上把凌晨的调用算成两天;如你的数据受此影响, 可在「用量 → 重建统计」以请求日志为准重建一次

安全建议(部署后)

  1. 改掉初始密码,不要沿用部署脚本中的默认值
  2. 务必经 HTTPS 访问:7863 / 7864 建议只监听 127.0.0.1,由反向代理对外
  3. 如需前置 CDN,请把 WB_TRUSTED_PROXY_HOPS 设为 CDN + 反代的层数
  4. 发现问题请走私密渠道, 不要公开提交 Issue

⚠️ 公网暴露必须启用 HTTPS,否则会话 Cookie 与密码可被中间人窃取。 建议再叠加 1Panel IP 白名单或 Cloudflare Access 加固。