关于本论坛的安全细节

作为一款注重用户隐私的社区平台,MyndBBS 在安全设计上投入了大量精力。本文将介绍本论坛的技术安全细节,帮助您了解我们如何保护您的账号和数据安全。


一、端到端加密(E2EE)

私信功能是本论坛的核心特性之一。我们采用 端到端加密 确保您的私人通信只有对话双方可以阅读,即使是服务器管理员也无法解密。

加密架构

层级技术方案说明
密钥交换P-521 ECDH椭圆曲线 Diffie-Hellman,提供 521 位安全级别
后量子加密ML-KEM-1024抗量子计算的密钥封装机制(X-Wing 混合方案)
密钥派生HKDF-SHA256从共享密钥派生最终的 AES 加密密钥
消息加密AES-256-GCM带认证标签的对称加密,防篡改

工作流程

  1. 发送消息时,使用您的私钥与对方的公钥通过 ECDH 派生共享密钥
  2. 结合 ML-KEM-1024 的共享密钥形成混合密钥材料
  3. 通过 HKDF 导出 AES-256-GCM 会话密钥
  4. 加密后的消息以 Base64 格式传输

私钥保护

您的私钥本身使用独立的 AES-256-GCM 密钥加密存储。每次登录时,您需要输入密码解锁私钥。我们不会在服务器端存储您的明文私钥或密码。


二、认证与授权体系

JWT 双 Token 机制

Token 类型有效期存储方式
Access Token15 分钟HttpOnly Cookie
Refresh Token较长有效期HttpOnly Cookie
  • Access Token 过期前会自动刷新,无需频繁登录
  • Token 签名使用 HS256 算法,密钥由环境变量 JWT_SECRET 提供
  • 生产环境下强制使用 HTTPS 传输(Secure Cookie)

CASL 细粒度权限控制

我们采用 CASL 权限引擎实现基于角色的访问控制(RBAC):

角色权限范围
SUPER_ADMIN完全控制权(manage all)
ADMIN完全控制权(manage all)
MODERATOR读取所有 + 管理面板访问权
版主仅限管辖分类内的管理权限
普通用户读写自己创建的内容
游客仅读取公开且无等级限制的内容

权限规则支持数据库驱动,允许管理员在不修改代码的情况下调整权限配置。

会话管理

  • 会话状态缓存在 Redis 中,加速验证
  • 支持会话撤销(强制登出)
  • 被封禁用户无法通过缓存的 Token 继续访问

三、无密码认证(Passkeys)

我们支持基于 WebAuthn 标准的 Passkeys 无密码登录。

技术特性

  • 平台认证器:支持 macOS Keychain、Windows Hello、手机指纹等
  • Resident Key:登录时无需输入用户名
  • 用户验证:优先要求生物特征验证(指纹、面容、PIN)

安全性优势

  • 不存在密码泄露风险
  • 无法被钓鱼攻击骗取
  • 私钥永远不离设备

首次设置 Passkey 后,您可以在安全设置中管理已注册的认证器。


四、两步验证(TOTP)

为账号安全提供额外保护层。

加密存储

您的 TOTP 密钥(Base32 格式)不会明文存储在数据库中。我们使用:

  • AES-256-GCM 加密算法
  • HKDF-SHA256JWT_SECRET 派生加密密钥
  • 认证标签(Auth Tag) 检测密文篡改
  • v1: 前缀 区分加密数据与遗留明文数据

敏感操作二次认证

以下高风险操作需要进入 Sudo 模式(重新验证身份后执行):

  • 删除已注册的 Passkey
  • 修改或禁用 TOTP 两步验证
  • 修改安全相关的账号设置

五、速率限制

为防止暴力破解、灌水和滥用,我们部署了多层级限流:

场景限制规则
发帖/评论5 分钟内最多 10 次
文件上传10 分钟内最多 5 次
好友请求1 小时内最多 20 次
公开读取1 分钟内最多 30 次

限流基于客户端 IP(经代理识别后的真实 IP)计算。


六、HTTP 安全头部

后端使用 Helmet.js 设置安全相关的 HTTP 头部,包括但不限于:

  • X-Content-Type-Options: nosniff — 防止 MIME 类型嗅探
  • Content-Security-Policy — 限制资源加载来源
  • CORS 白名单 — 仅允许配置的域名跨域请求

CSRF 防护

针对非安全 HTTP 方法(POST/PUT/DELETE),我们验证:

  1. Origin 请求头必须在允许的域名列表中
  2. X-Requested-With 头必须为 XMLHttpRequest

文件下载安全

访问上传文件时:

  • 头像文件:以内联方式展示,设置 Content-Disposition: inline
  • 其他文件:强制下载,设置 Content-Disposition: attachment
  • 点文件(.gitignore 等)一律拒绝访问

七、Cookie 安全配置

属性作用
HttpOnlytrue禁止 JavaScript 读取
Secureproduction 环境为 true仅通过 HTTPS 传输
SameSitelax限制跨站请求携带
Path/api仅在 API 路径下生效

八、代码层面安全

输入限制

  • 请求体大小限制:100KB
  • URL 编码数据大小限制:100KB

安全默认值

  • 隐藏 X-Powered-By 响应头
  • 禁用调试模式
  • 生产环境校验 JWT_SECRETJWT_REFRESH_SECRET 必须不同

审计日志

后端集成审计中间件,记录关键操作的元数据。


九、隐私保护

  • 私信内容采用端到端加密,服务器无法解密
  • 数据库中不存储明文敏感信息
  • 符合 GDPR 和《个人信息保护法》(PIPL)要求

十、安全建议

作为用户,您也可以采取措施提升账号安全:

  1. 启用 Passkeys:使用生物特征登录,无密码泄露风险
  2. 开启两步验证:即使密码泄露,攻击者也无法登录
  3. 使用强密码:如果使用密码登录,确保密码足够复杂且唯一
  4. 警惕钓鱼:我们不会通过私信索要您的密码或验证码
  5. 及时举报:发现可疑行为或收到违规私信,请使用举报功能

MyndBBS 致力于为用户提供安全、可靠的社区环境。我们将持续关注安全领域的新技术,不断优化平台安全能力。

如您对安全有任何疑问或建议,欢迎通过站内渠道反馈。

Comments (2)

?
No comments yet. Be the first to comment!