Mon équipe a reçu un code côté serveur (en Java) qui génère des jetons aléatoires et j'ai une question à ce sujet -
Le but de ces jetons est assez sensible - utilisé pour l'identifiant de session, les liens de réinitialisation de mot de passe, etc. Ils doivent donc être cryptographiquement aléatoires pour éviter que quelqu'un ne les devine ou les force brutalement. Le jeton est un "long" donc il est long de 64 bits.
Le code utilise actuellement la java.util.Randomclasse pour générer ces jetons. La documentation de java.util.Randomindique clairement ce qui suit:
Les instances de java.util.Random ne sont pas cryptographiquement sécurisées. Envisagez plutôt d'utiliser SecureRandom pour obtenir un générateur de nombres pseudo-aléatoires cryptographiquement sécurisé à utiliser par les applications sensibles à la sécurité.
Cependant, la façon dont le code utilise actuellement java.util.Randomest la suivante: il instancie la java.security.SecureRandomclasse, puis utilise la SecureRandom.nextLong()méthode pour obtenir la valeur de départ utilisée pour instancier la java.util.Randomclasse. Ensuite, il utilise une java.util.Random.nextLong()méthode pour générer le jeton.
Donc, ma question maintenant - est-il encore peu sûr étant donné que le java.util.Randomsemis est utilisé java.security.SecureRandom? Dois-je modifier le code afin qu'il utilise java.security.SecureRandomexclusivement pour générer les jetons?
Actuellement, la graine de code est Randomune fois au démarrage
Randomune fois au démarrage, ou en amène-t-il un nouveau pour chaque jeton? J'espère que c'est une question stupide, mais j'ai pensé vérifier.
longou les doublevaleurs.