由于邮件令牌已被使用,备份下载中断后无法继续

我已经为此创建了一个 PR:

该实现保留了用于发起下载的现有单次使用电子邮件令牌,同时允许本地备份创建一个独立的、有范围的恢复授权,其范围限定为:

  • 相同的已认证管理员;
  • 相同的备份;
  • 相同的原始令牌值;以及
  • 携带 Range 头的后续请求。

使用已消耗令牌进行的普通第二次完整 GET 请求仍会被拒绝,针对其他备份的 Range 请求也是如此。远程/S3 备份保留其现有行为。

我将恢复时间段设置为枚举值,而不是无限制的持续时间:

  • Disabled(禁用)
  • 1 hour(1 小时)
  • 6 hours (recommended)(6 小时(推荐))
  • 12 hours(12 小时)
  • Until the original email token expires(直到原始电子邮件令牌过期)

当初始下载开始时,有效的恢复时间段也会被限制在原始电子邮件令牌的剩余生命周期内。

当前的 Discourse 行为(Disabled)仍为默认设置,以保持向后兼容性,而在启用可恢复下载时,6 hours 会作为推荐选项呈现。

该 PR 询问维护者是否希望保留该保持兼容性的默认设置,或者在修复此问题的同时,将推荐的可恢复值设为默认值。

我还为成功的恢复路径和主要的授权边界添加了回归测试覆盖,包括:

  • 普通令牌重用仍被拒绝;
  • 跨备份恢复仍被拒绝;
  • 禁用该设置会立即阻止进一步的恢复;
  • S3 不会收到本地恢复授权;以及
  • 初始下载及其恢复仅产生一个备份下载审计条目。

完整的 CI 套件已通过,PR 已准备好接受审查。

欢迎对安全模型,特别是 6 小时的推荐值和默认设置,提供反馈。