新的盐值
本课属于 Coddy Node.js 学习旅程的“身份验证与安全”单元。第 3 课,共 24 课。
人们可以选择相同的密码。盐值是推导存储的密码密钥时加入的随机数据。使用新的盐值,可以让相同的密码生成不同的存储密钥。盐值会和密钥一起保存,不需要保密。
const salt = randomBytes(8).toString('hex');
// 8 个随机字节写成 16 个十六进制字符在每次处理新密码时调用的函数中生成盐值。如果在服务器启动时只生成一次,就会重复使用同一个盐值。你已经使用固定的练习盐值推导出了密钥。现在,存储密码时每次都需要使用新的盐值。在这里,只练习生成盐值,并查看它的文本长度为 32 个字符。
randomBytes 使用加密安全的随机数生成器。Math.random() 不适用于安全敏感的值。请使用导入的加密函数生成盐值。
挑战
简单这是一个小型练习项目。项目已提供所需设置;只编辑 exercise.js。
在 salt 中返回一个全新的 16 字节随机盐值,并以十六进制形式表示。运行两次 GET /result:每次响应都包含一个不同的 32 位十六进制字符串。不要使用固定的盐值。
亲手试试
import { randomBytes } from 'node:crypto';
export function exercise() {
return { salt: '00000000000000000000000000000000' };
}
身份验证与安全中的所有课
自己练习: Express 在线编辑器