it-swarm.com.de

Ist das E-Mail-Anmelden von Links eine schlechte Praxis?

In meiner Spring-Anwendung hatte ich vor, Kennwörter aus dem Authentifizierungsprozess zu entfernen, indem ein "Magic Sign-In-Link" an die E-Mail-Adresse eines Benutzers gesendet wurde. In diese Frage sagt Rob Winch (Leiter von Spring Security) jedoch Folgendes:

Stellen Sie sicher, dass Sie wissen, was Sie tun, um die Anmeldung über einen Link in einer E-Mail zuzulassen. SMTP ist kein sicheres Protokoll und daher ist es normalerweise schlecht, sich darauf zu verlassen, dass jemand eine E-Mail als Authentifizierungsform hat.

Ist das wirklich der Fall? Wenn ja, wie ist das Senden eines Links zum Zurücksetzen des Passworts sicherer? Ist das Anmelden mit einem magischen Link nicht dasselbe wie das Senden eines magischen Links zum Zurücksetzen eines Passworts?

32
Utku

Eine magische Verbindung allein ist nicht unbedingt schlecht. Ein völlig zufälliger 512-Bit-Wert ist nicht einfacher zu erraten als ein privater 512-Bit-Schlüssel. Im Allgemeinen wird es als gute Praxis angesehen, sie nach einer angemessenen Zeitspanne abzulaufen. Ein guter Ansatz, bei dem auch das Speichern von Datenbankeinträgen vermieden wird, besteht darin, die Token-Daten in die URL einzubetten und mit einem privaten Schlüssel zu signieren. Das heißt,.

site.com/login?type=login&user=[username]&expires=[datetime]&sig=[signature of other parameters].

E-Mail als Übertragungsmechanismus ist jedoch nicht sicher.

Standardmäßig bietet SMTP nur sehr wenig Schutz gegen Abfangen. Der Datenverkehr kann zwischen Servern verschlüsselt werden, es gibt jedoch keine Garantien. Selbst mit Verschlüsselung ist es oft noch möglich, die Verbindung in der Mitte zu managen (Verschlüsselung ist nicht dasselbe wie Authentifizierung).

Wenn ja, wie ist das Senden eines Links zum Zurücksetzen des Passworts sicherer?

Ist es nicht. Aus diesem Grund fordern mehrere Dienste einen zusätzlichen Nachweis an, bevor Sie den Link senden (oder nachdem Sie darauf geklickt haben).

30
Hector

Hier gibt es drei Probleme.

  1. Wie in der Dokumentation geschrieben, ist E-Mail kein sicheres Protokoll. E-Mails werden im Klartext auf den Mailservern gespeichert. Die Verschlüsselung zwischen Servern sowie zwischen Servern und Clients ist optional und liegt außerhalb Ihrer Kontrolle. Und Sie befinden sich höchstwahrscheinlich nicht in einem Szenario, in dem Sie eines der optionalen End-to-End-Verschlüsselungssysteme verwenden können, die auf E-Mail basieren (PGP, S/MIME usw.). Sie können also nicht garantieren, dass niemand außer dem beabsichtigten Empfänger die E-Mail im Klartext sieht.
  2. Geheimnisse gehören nicht in URLs. URLs werden in Browserverläufen, in Proxy-Caches, in Serverprotokollen und an vielen anderen Stellen angezeigt, an denen keine geheimen Informationen angezeigt werden sollen.
  3. Benutzer wissen, wie Passwörter funktionieren. Es war nicht einfach, aber nach einem langen Kampf haben wir es endlich in den Kopf bekommen, dass Passwörter geheim gehalten werden müssen. Bei Ihrem System wissen Benutzer möglicherweise nicht, welches Geheimnis für die Authentifizierung bei Ihrem Dienst relevant ist. Das macht es wahrscheinlich, dass sie diese Informationen falsch handhaben und anfällig für Social-Engineering-Angriffe sind.

Wenn Sie senden Links mit einem geheimen Login-Token per E-Mail, dann sollten sie zum Einmalgebrauch bestimmt sein und ziemlich schnell ablaufen.

23
Philipp