Backup-Download kann nach Unterbrechung nicht fortgesetzt werden, da der E-Mail-Token bereits verwendet wurde

Ich habe nun einen PR dafür erstellt:

Die Implementierung behält den bestehenden Einmal-Token per E-Mail bei, der zum Starten des Downloads verwendet wird, und ermöglicht lokalen Backups, eine separate, begrenzte Fortsetzungsautorisierung zu erstellen, die auf Folgendes beschränkt ist:

  • denselben authentifizierten Administrator;

  • dasselbe Backup;

  • denselben ursprünglichen Token-Wert; und

  • eine nachfolgende Anfrage mit einem Range-Header.

Eine gewöhnliche zweite vollständige GET-Anfrage mit dem verbrauchten Token wird weiterhin abgelehnt, ebenso wie eine Range-Anfrage für ein anderes Backup. Remote-/S3-Backups behalten ihr bestehendes Verhalten bei.

Ich habe die Fortsetzungszeit als Enum statt als unbegrenzte Dauer definiert:

  • Disabled

  • 1 hour

  • 6 hours (recommended)

  • 12 hours

  • Until the original email token expires

Die effektive Fortsetzungszeit wird zudem auf die verbleibende Lebensdauer des ursprünglichen E-Mail-Tokens begrenzt, wenn der anfängliche Download beginnt.

Das aktuelle Discourse-Verhalten bleibt aus Gründen der Abwärtskompatibilität der Standardwert (Disabled), während 6 hours als empfohlene Option dargestellt wird, wenn herunterladbare Fortsetzungen aktiviert sind.

Der PR fragt, ob die Maintainer diesen die Kompatibilität erhaltenden Standardwert beibehalten oder den empfohlenen Fortsetzungswert als Standardwert festlegen möchten, um dieses Problem zu beheben.

Ich habe auch Regressionsabdeckung für den erfolgreichen Fortsetzungspfad und die wichtigsten Autorisierungsgrenzen hinzugefügt, einschließlich:

  • gewöhnliche Token-Wiederverwendung bleibt abgelehnt;

  • Cross-Backup-Fortsetzung bleibt abgelehnt;

  • Deaktivieren der Einstellung verhindert sofort weitere Fortsetzungen;

  • S3 erhält keine lokale Fortsetzungsautorisierung; und

  • der anfängliche Download und seine Fortsetzung erzeugen nur einen einzigen Backup-Download-Audit-Eintrag.

Die vollständige CI-Suite ist bestanden und der PR ist bereit zur Überprüfung.

Feedback zum Sicherheitsmodell, insbesondere zur Empfehlung von 6 Stunden und zur Standardeinstellung, wäre willkommen.