⏺ 木雷短网址 v2.10.0 版本更新说明

版本概览

本次更新涵盖 v2.7.0 至 v2.10.0 的所有变更,共 4 个版本,主要包含登录安全加固、API 鉴权方式升级、短码安全性增强和删除操作优化四大核心改进。


一、登录安全加固

登录速率限制

新增速率限制服务,有效防止暴力破解攻击:

  • 双层防护机制
    • IP 级别限制:15 分钟内最多 10 次尝试,超出锁定 15 分钟
    • 用户名级别限制:15 分钟内最多 5 次尝试,超出锁定 15 分钟
  • 优雅降级设计
    • 当缓存服务不可用时自动跳过速率限制检查
    • 确保服务可用性优先
  • 详细错误响应
    • 返回限制类型(IP / 用户名)
    • 返回剩余尝试次数
    • 返回锁定剩余时间

代码结构优化

  • 新增独立的 AuthService,从 UserService 中分离认证逻辑
  • 新增 AuthController 处理认证相关请求
  • 新增 RateLimiterService 速率限制服务(211 行)

二、API 鉴权方式升级

HMAC-SHA256 签名认证

新增更安全的 API 签名认证方式:

  • 签名认证流程
请求头说明
X-App-Id应用 ID
X-SignatureHMAC-SHA256 签名
X-Timestamp请求时间戳
X-Nonce随机数(防重放攻击)
  • 双模式认证 a. 优先检测签名认证头(X-App-Id 等) b. 回退到 Bearer Token 认证 c. 无认证信息时返回 401
  • Token 模型扩展
    • 新增 token_type 字段:bearer 或 signature
    • 签名认证使用 app_id + app_secret
    • Bearer Token 使用传统 token 字符串

完整 API 文档

  • API_BEARER_AUTH.md - Bearer Token 认证文档
  • API_SIGNATURE_AUTH.md - 签名认证文档
  • API_REFERENCE.md - 完整 API 参考文档

新增错误码

错误码说明
40101缺少认证信息
40102时间戳无效
40103签名验证失败
40104无效的 AppID
40105Token 已禁用
40106用户已被禁用

三、短码安全性增强

XOR 混淆功能

新增 XOR 混淆功能,防止短码被顺序推测:

  • Domain 配置扩展
    • enable_xor_obfuscation: 是否启用 XOR 混淆
    • xor_secret: XOR 密钥(后端自动生成)
    • xor_rot: 旋转位数(后端自动生成)
  • 混淆算法
    • 使用 XOR + 位旋转混淆 ID
    • 保持 base62 编码长度与原 ID 一致
    • 密钥和旋转位数由服务层随机生成

域名默认开始数字配置

  • Domain 新增 default_start_number 字段
  • 支持设置短码 ID 生成的起始值
  • 本地和 Redis ID 生成器支持初始化
  • 域名创建后禁止修改,确保短码连续性

四、删除操作优化

硬删除机制

  • 短网址和域名删除改为硬删除(彻底删除数据)
  • 删除前必须先禁用 is_active 状态
  • 未禁用就删除返回 403 状态码

新增接口

  • PUT /api/v1/short-links/:id/status - 更新短网址状态

五、代码统计

版本主要内容
v2.8.0登录速率限制、认证服务重构
v2.9.0API 签名认证、双模式认证
v2.10.0XOR 混淆、硬删除、默认开始数字
合计四大核心功能更新

六、升级注意事项

1. 数据库迁移

- 新增字段需要执行数据库迁移
- user_token 表新增 token_type、app_id、app_secret 字段
- domain 表新增 enable_xor_obfuscation、xor_secret、xor_rot、default_start_number 字段

2. 兼容性

- Bearer Token 认证完全兼容,无需修改
- 签名认证为新增功能,可按需启用

3. 配置变更

- 建议生产环境启用登录速率限制
- 建议生产环境启用 Redis 缓存以获得最佳性能

发布日期: 2025年12月25日 代码仓库: cnb.cool/mliev/open/dwz-server