Private Discourse-Instanz, E-Mail-Versand über Mailgun. 2.4b1.
Unter verschiedenen gruppengeschützten Kategorien:
- CategoryA, geschützt durch GroupA
- CategoryB, geschützt durch GroupB
Es gibt zudem zwei Benutzer:
-
User1
- ist Mitglied von GroupA.
-
User2
- ist Mitglied von GroupA und GroupB.
Keiner der Benutzer hat die Website seit über 24 Stunden besucht. Beide haben Benachrichtigungen für alle neuen Beiträge in den Kategorien aktiviert, auf die sie Zugriff haben.
Ein neues Thema wurde zunächst in CategoryA veröffentlicht und schnell in CategoryB umkategorisiert.
Mehrere Stunden später, beim Prüfen der Logs bei MailGun, stelle ich fest, dass sowohl User1 als auch User2 E-Mail-Benachrichtigungen über das neue Thema erhalten haben. Der Betreff der E-Mail verzeichnete das Thema jedoch als in CategoryB befindlich, obwohl User2 zuvor nichts von der Existenz dieser Kategorie wusste.
Die Einstellung email time window mins ist auf 5 Minuten gesetzt; die Umkategorisierung des Beitrags erfolgte lange bevor diese Zeitspanne verstrichen war. Der Hinweis unter diesem Feld lautet: Warten Sie (n) Minuten, bevor Benachrichtigungs-E-Mails gesendet werden, um Benutzern die Möglichkeit zu geben, ihre Beiträge zu bearbeiten und abzuschließen.
Es scheint, als läge ein Fehler in der Logik für E-Mail-Benachrichtigungen vor. Der Beitrag wurde Sekunden nach der Veröffentlichung verschoben, und die E-Mails belegen, dass die Umkategorisierung vor dem Versand stattfand. Die E-Mail wurde aus einer Kategorie gesendet, über die der Benutzer weder Kenntnis noch Zugriff hatte, wodurch letztlich Informationen an den falschen Empfänger gelangten.
Im schlimmsten Fall würde ich erwarten, dass die E-Mail CategoryA als Quelle angibt, auf die User1 Zugriff hatte, obwohl dies ebenfalls unerwünscht wäre, falls das Thema vor dem Versand der E-Mail wieder aus dieser Kategorie entfernt wurde. Ideal wäre es, wenn die Kategorie zum Zeitpunkt des geplanten E-Mail-Versands erneut geprüft würde. Dies würde menschliche Fehler verhindern und zu keinerlei Datenleck führen.