Sicherheitsbericht: warum es keine E-Mail-Verifizierung gibt
Die Frage kam auf und die Antwort gehoert festgehalten, sonst stellt sie sich in einem halben Jahr wieder — dann ohne die Begruendung. Kurz: Es gibt keine Selbstregistrierung. Konten legt ein Administrator an, der die Adresse selbst eintraegt; eine Bestaetigungsmail wuerde also niemanden hereinlassen und niemanden fernhalten. Und weil es keinen Reset per E-Mail gibt, ist die unbestaetigte Adresse auch kein Uebernahmeweg. Noetig wuerde sie in dem Moment, in dem sich Leute selbst registrieren duerfen. Dazu das Zeitfenster der Ersteinrichtung ausdruecklich benannt: Das erste Konto entsteht ohne Legitimation und ist gleich Administrator. Dagegen hilft keine Verifizierung, sondern nur die Reihenfolge beim Aufsetzen — oder ein einmaliges Token, das jetzt auf der Roadmap steht.
This commit is contained in:
@@ -152,6 +152,15 @@ Fenstern geschieht.
|
|||||||
|
|
||||||
## Später denkbar
|
## Später denkbar
|
||||||
|
|
||||||
|
**Das Fenster der Ersteinrichtung schließen** · klein
|
||||||
|
Heute wird das erste Konto ohne jede Legitimation angelegt und ist gleich
|
||||||
|
Administrator. Wer die Anwendung öffentlich stellt, bevor er sein Konto
|
||||||
|
angelegt hat, kann sie an einen Fremden verlieren. Vorschlag: ein einmaliges
|
||||||
|
Token, das beim ersten Start ins Protokoll geschrieben wird und für die
|
||||||
|
Ersteinrichtung nötig ist. Klein im Aufwand — und das Erste, was zu tun ist,
|
||||||
|
falls die Anwendung je aus dem eigenen Netz herausgeht. Siehe
|
||||||
|
[sicherheit.md](sicherheit.md).
|
||||||
|
|
||||||
**Codes exportieren** · klein
|
**Codes exportieren** · klein
|
||||||
Eine CSV aller Codes einer Gruppe mit Name, Kurz-URL, Ziel und Scans — für
|
Eine CSV aller Codes einer Gruppe mit Name, Kurz-URL, Ziel und Scans — für
|
||||||
die Übergabe an eine Druckerei oder die Ablage.
|
die Übergabe an eine Druckerei oder die Ablage.
|
||||||
|
|||||||
@@ -195,6 +195,44 @@ Konto nur bei **bestätigter** E-Mail-Adresse.
|
|||||||
|
|
||||||
Bewusst nicht umgesetzt, mit Begründung.
|
Bewusst nicht umgesetzt, mit Begründung.
|
||||||
|
|
||||||
|
**E-Mail-Verifizierung.** Es gibt keine — und sie würde derzeit auch nichts
|
||||||
|
bringen. Die Anwendung kennt **keine Selbstregistrierung**: Es gibt nur
|
||||||
|
`login`, `setup`, `logout` und `change-password`. Konten legt ein
|
||||||
|
Administrator an, der die Adresse selbst einträgt. Eine Bestätigungsmail
|
||||||
|
würde also belegen, dass eine Adresse existiert, aber niemanden hereinlassen
|
||||||
|
und niemanden fernhalten.
|
||||||
|
|
||||||
|
Dazu kommt: Es gibt **kein „Passwort vergessen" per E-Mail**. Zurücksetzen
|
||||||
|
kann nur ein Administrator unter Verwaltung → Benutzer. Damit ist die
|
||||||
|
unbestätigte Adresse auch kein Übernahmeweg — bei einem Reset per Mail wäre
|
||||||
|
sie einer. Die Adresse ist hier schlicht ein Anmeldename.
|
||||||
|
|
||||||
|
Nötig würde die Verifizierung in dem Moment, in dem sich Leute selbst
|
||||||
|
registrieren dürfen. Dann allerdings zwingend, zusammen mit einem
|
||||||
|
SMTP-Versand, Ablauffristen für die Bestätigungslinks und einem Weg für
|
||||||
|
nicht zugestellte Mails.
|
||||||
|
|
||||||
|
Zwei Stellen bleiben davon ohnehin unberührt, weil dort nicht der
|
||||||
|
Administrator die Adresse einträgt:
|
||||||
|
|
||||||
|
- **Die Ersteinrichtung.** Wer zuerst kommt, wird Administrator. Dagegen hilft
|
||||||
|
keine Verifizierung, sondern nur, das Fenster zu schließen — siehe unten.
|
||||||
|
- **Die Anmeldung über einen Anbieter.** Dort bürgt der Anbieter für die
|
||||||
|
Adresse, und genau das prüft die Anwendung: Ein bestehendes Konto wird nur
|
||||||
|
bei `email_verified` verknüpft.
|
||||||
|
|
||||||
|
**Das Zeitfenster der Ersteinrichtung.** Solange es keinen Benutzer gibt und
|
||||||
|
die Anmeldung eingeschaltet ist, wird das erste Konto ohne jede Legitimation
|
||||||
|
angelegt — und ist Administrator der Installation. Steht die Anwendung schon
|
||||||
|
öffentlich, bevor der Betreiber sein Konto anlegt, kann ein Fremder sie
|
||||||
|
übernehmen.
|
||||||
|
|
||||||
|
Heute ist das eine Frage der Reihenfolge: erst starten, sofort das erste
|
||||||
|
Konto anlegen, dann erreichbar machen. Sauberer wäre ein einmaliges Token,
|
||||||
|
das beim ersten Start ins Protokoll geschrieben wird und für die
|
||||||
|
Ersteinrichtung nötig ist. Steht als Vorschlag in der
|
||||||
|
[Roadmap](roadmap.md).
|
||||||
|
|
||||||
**Vollständige Content-Security-Policy für Skripte.** Bräuchte Nonces durch
|
**Vollständige Content-Security-Policy für Skripte.** Bräuchte Nonces durch
|
||||||
die ganze Anwendung, weil Next.js eingebettete Skripte ausliefert. Der Nutzen
|
die ganze Anwendung, weil Next.js eingebettete Skripte ausliefert. Der Nutzen
|
||||||
wäre echt — es ist die zweite Verteidigungslinie gegen XSS —, aber halb
|
wäre echt — es ist die zweite Verteidigungslinie gegen XSS —, aber halb
|
||||||
|
|||||||
Reference in New Issue
Block a user