Mein Team hat einen serverseitigen Code (in Java) erhalten, der zufällige Token generiert, und ich habe eine Frage dazu -
Der Zweck dieser Token ist ziemlich sensibel - sie werden für Sitzungs-IDs, Links zum Zurücksetzen von Passwörtern usw. verwendet. Sie müssen also kryptografisch zufällig sein, um zu vermeiden, dass jemand sie errät oder brutal erzwingt. Das Token ist "lang", also 64 Bit lang.
Der Code verwendet derzeit die java.util.RandomKlasse, um diese Token zu generieren. In der Dokumentation zu heißt es java.util.Randomeindeutig:
Instanzen von java.util.Random sind nicht kryptografisch sicher. Verwenden Sie stattdessen SecureRandom, um einen kryptografisch sicheren Pseudozufallszahlengenerator für sicherheitsrelevante Anwendungen zu erhalten.
Der Code verwendet derzeit jedoch Folgendes java.util.Random: Er instanziiert die java.security.SecureRandomKlasse und verwendet dann die SecureRandom.nextLong()Methode, um den Startwert zu erhalten, der zum Instanziieren der java.util.RandomKlasse verwendet wird. Anschließend java.util.Random.nextLong()wird das Token mithilfe der Methode generiert.
Also meine Frage jetzt - Ist es immer noch unsicher, wenn man bedenkt, dass das java.util.Randommit ausgesät wird java.security.SecureRandom? Muss ich den Code so ändern, dass er java.security.SecureRandomausschließlich zum Generieren der Token verwendet wird?
Derzeit ist der Code-Seed der Randomeinmalige Start
Randombeim Start einmal oder setzt er für jedes Token einen neuen? Hoffentlich ist das eine dumme Frage, aber ich dachte, ich würde es überprüfen.
longoder doubleWerte.