Ich erstelle eine URL, die aus einem Token für den einmaligen Gebrauch besteht, und sende sie per E-Mail an einen Benutzer. Der Benutzer sollte auf diesen Link klicken und zu einer Seite weitergeleitet werden, die das Token validiert und einige Aktionen ausführt.Gespeicherte gesalzene Token- und Token-Vergleiche
Auf der Datenbankseite, ich speichere dieses Token (Hashed und gesalzen, aus Sicherheitsgründen). Das Problem ist, dass ich einige Schwierigkeiten habe, das Token zu validieren, da ich, wie ich es speichere, nicht dasselbe Salz für dasselbe Token erzeugen kann. Und deshalb kann ich dieses Salz nicht mit denen vergleichen, die ich aufbewahrt habe.
# Retrieving or creating object usertokens
usr, created = UserToken.objects.get_or_create(email=email)
# Adding a new token
token = uuid.uuid4().hex
usr.token = make_password(token) # Stores in the local database the salted and hashed token
usr.save()
Diese make_password Methode Ich verwende in django.contrib.auth.hashers
definiert.
Mit dieser Methode kann ich nicht zweimal das gleiche Salz aus dem gleichen Token generieren.
>>> token = 'test'
>>> enc_token1 = make_password(token)
>>> enc_token2 = make_password(token)
>>> enc_token1 == enc_token2
False
Diese führt jedoch helfen Sie mir nicht auf das Token aus meiner Datenbank den Eintrag abrufen entspricht, und ich kann es nicht bestätigen kann.
Jetzt gibt es etwas, was ich noch nie zuvor gehört habe; _Hashed und gesalzene Tokens_. Möchten Sie etwas Ketchup mit diesen Token? ..... –
Alle Witze beiseite, ist der Zweck des Hashing und Salzens, dass das ursprüngliche Passwort nicht aus der Hash-Zeichenfolge abgerufen werden kann. Bei Passwörtern ist dies ein Problem, da Passwörter häufig in irgendeiner Weise wiederverwendet werden und Sie möchten, dass sie auch nach einer möglichen Sicherheitsverletzung geheim bleiben. Token können einfach zurückgesetzt werden, und dann hat der Angreifer absolut keinen Nutzen mehr für die erworbenen Token. Wie Sie bemerkt haben, gibt es keine effiziente Möglichkeit, nach einem gesalzenen und gehashten Token zu fragen. Aus diesem Grund werden Tokens normalerweise als Nur-Text gespeichert. Aus welchen Sicherheitsgründen möchten Sie die Hashes speichern? – knbk