gpt4 book ai didi

node.js - 如何在 NodeJS 中使用生成的随机数并在不调用数据库的情况下进行验证?

转载 作者:可可西里 更新时间:2023-11-01 09:29:06 24 4
gpt4 key购买 nike

我正在生成一个随机数来验证向导步骤以一个接一个地保护它。

我知道如何在 nodejs 中创建随机数并将其存储在数据库中以确保它可以使用一次。

但我想知道,是否有一种想法可以像上面那样生成和验证一个随机数,只使用一次,如果可能的话,可以在一个时间限制(到期)内使用,而不会将其存储在数据库中,而只是简单地在一个向导步骤中将其返回给客户端,并在下一步中对其进行验证。

我通常使用以下方法生成 nonce,对其进行规范化并将其存储在一个过期时间的 mongodb 中,以便 mongodb 在特定时间后未使用时将其删除。

var crypto = require('crypto');

crypto.randomBytes(32, function (err, bytes) {
if (err) {
next(err);
} else {
next(null, normalize(bytes));
}
});

请建议是否有比这更好/优化的生成随机数的方法,以及是否有可能在不调用数据库的情况下处理一次性使用和过期。

最佳答案

使用数据库来存储和验证 nonce 总是更好的做法。要限制时间,您可以使用带有到期时间的 mongodb,也可以生成时间戳,然后生成带有时间戳、随机数和私钥的 hmac。然后将随机数、时间戳和 hmac 发送给客户端。通过这种方式,您还可以保护时间戳,如果您的数据库不支持 mongodb 的文档过期,则可以限制特定时间的随机数。希望它解释。

关于node.js - 如何在 NodeJS 中使用生成的随机数并在不调用数据库的情况下进行验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40068193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com