这种方法是否足够安全,可以存储OAuth令牌?

muk1a3rh  于 2023-10-15  发布在  其他
关注(0)|答案(1)|浏览(74)

我正在使用Twitch OAuth API构建一个Node应用程序,我需要存储用户的访问和刷新令牌。我做了一些谷歌研究,主要是遵循the Nest.js docs(因为我使用的是Nest)。
这是加密令牌的代码。IV和盐是预先创建的(使用crypto.randomBytes(16)),并作为参数传递。

const key = (await promisify(scrypt)(process.env['CRYPT_PW'], salt, 32)) as Buffer,
    cipher = createCipheriv('aes-256-ctr', key, iv);

return Buffer.concat([
    cipher.update(token),
    cipher.final(),
]);

CRYPT_PW存储在环境变量中,IV和salt与相应的用户密钥一起存储在DB中。这是否足以存储OAuth令牌?如果没有,我需要改变什么?谢谢你,谢谢

bzzcjhmw

bzzcjhmw1#

总的来说,我会说是的,它足够安全。我自己也是这么做的。然而,我有几点意见必须确保,其他人可能也会觉得有用。

  1. CRYPT_PW的长度应至少为64个字符,以最大限度地利用AES 256位加密的全部强度。
  2. CRYPT_PW应该存储在某种安全存储中,并在部署期间获取一次。例如,如果您使用AWS,则可以使用Secrets Manager。
    1.您不一定需要生成随机盐,因为IV将为相同的密钥生成不同的密码。

相关问题