Login per Link mit Parameter

  • Hi,


    ich implementiere für eine Anwendung gerade den Direktlogin per Link + Hash.

    Der Hash wird dabei mit bin2hex(\random_bytes(50) generiert.


    Ist die Generierung/Länge des Hashes so sicher genug oder gibt es bessere Möglichkeiten? Ansonsten würde ich die Route zusätzlich noch per Rate Limiting absichern.


    Grüße

  • Ausgewählte Kunden bekommen per Email einen Link (z.B. http://www.example.com/admin/?loginHash=X) zugesandt, mit dem sie direkt eingeloggt sind, um Ihr Profil vollständig auszufüllen.


    Zugangsdaten (Email + PW) haben die Kunden nicht und sollen sie auch nicht bekommen. Dass der Account des Kunden "futsch" ist, wenn der Link an die Öffentlichkeit gerät, ist natürlich bekannt.


    Die Prüfung des Hash würde ungefähr so aussehen:

    Was ich mich auch noch Frage, ob hier "timing attacks" möglich wären. Vermutlich wäre das bei der direkten Ausführung der Query möglich, aber nicht wenn das ganze noch über PHP und das Netzwerk/den Browser geht?

    • Official Post

    Hallo,


    danke für die Details.

    Was ich mich auch noch Frage, ob hier "timing attacks" möglich wären.

    Ja.

    Vermutlich wäre das bei der direkten Ausführung der Query möglich, aber nicht wenn das ganze noch über PHP und das Netzwerk/den Browser geht?

    Timing-Angriffe werden teurer, je mehr Jitter in der Verbindung ist, aber mit genug Anfragen sind die auch über das Internet möglich.


    Um deine Frage zu beantworten:


    Ist die Generierung/Länge des Hashes so sicher genug oder gibt es bessere Möglichkeiten?


    Zum Lookup: Binde die User-ID irgendwie mit in den Link ein, selektiere den User ausschließlich auf Basis der User-ID und führe die restliche Validierung komplett in PHP durch (bspw. die Prüfung auf Aktivierung). Das Token validierst du via hash_equals().

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!