Menu
CoddyTech

Um novo salt

Parte da seção Autenticação e segurança do Journey de Node.js da Coddy. Lição 3 de 24.

As pessoas podem escolher a mesma senha. Um salt é um dado aleatório incluído ao derivar a chave da senha armazenada. Um salt novo faz com que senhas iguais produzam chaves armazenadas diferentes. O salt é salvo junto à chave; ele não precisa ser secreto.

const salt = randomBytes(8).toString('hex');
// 8 bytes aleatórios representados por 16 caracteres hexadecimais

Gere o salt dentro da função chamada para cada nova senha. Um valor criado uma única vez, quando o servidor é iniciado, seria reutilizado. Você derivou uma chave usando um salt de prática fixo. Agora, o armazenamento de senhas precisa de um salt novo a cada vez. Aqui, pratique apenas a geração do salt e confira o comprimento do texto, que é de 32 caracteres.

randomBytes usa um gerador aleatório criptográfico. Math.random() não foi projetado para valores sensíveis à segurança. Use a função criptográfica importada para o salt.

challenge icon

Desafio

Fácil

Este é um pequeno projeto de prática. A configuração já está pronta; edite apenas exercise.js.

Retorne um salt aleatório novo de 16 bytes em hexadecimal em salt. Execute e GET /result duas vezes: cada resposta contém uma string hexadecimal diferente de 32 caracteres. Não use um salt fixo.

Experimente você mesmo

import { randomBytes } from 'node:crypto';
export function exercise() {
    return { salt: '00000000000000000000000000000000' };
}

Todas as lições de Autenticação e segurança

Pratique por conta própria: Playground de Express