Как сохранить зашифрованный пароль в переменной окружения в node.js ?

#node.js #password-encryption

#node.js #пароль-шифрование

Вопрос:

Итак, идея проста, но я не уверен, правильно ли я это делаю. В моем приложении мне нужно использовать имя пользователя / пароль для некоторых подключений к базе данных. Информация хранится в моем файле .bashrc и экспортируется с помощью переменных env. Я не хочу хранить их в виде открытого текста, поэтому я хочу сохранить их в зашифрованном виде. Во время выполнения я считываю переменные env, расшифровываю их и использую.

В настоящее время у меня есть node.js приложение, которое выполняет шифрование, фрагмент кода:

     const crypto = require('crypto');

    const emailPassword = CLEAR_TEXT_PASSWORD;
    const algorithm = 'aes-192-cbc';
    const password = 'p3241';
    const key = crypto.scryptSync(password, 'salt', 24);
    const iv = Buffer.alloc(16, 0); 

    const cipher = crypto.createCipheriv(algorithm, key, iv);

    let encrypted = cipher.update(emailPassword, 'utf8', 'hex');
    encrypted  = cipher.final('hex');
    console.log(encrypted);
  

Результатом вышесказанного становится моя переменная env.

Теперь в моем пользовательском приложении, чтобы использовать переменную env, у меня есть процедура, обратная расшифровке перед использованием.

Это выглядит как

 export const decipher = (input: string) : string => {
    const algorithm = 'aes-192-cbc';
    const password = 'p3241';

    const key = crypto.scryptSync(password, 'salt', 24);


    const iv = Buffer.alloc(16, 0); 

    const decipher = crypto.createDecipheriv(algorithm, key, iv);

    let decrypted = decipher.update(input, 'hex', 'utf8');
    decrypted  = decipher.final('utf8');
    console.log(decrypted);
    return decrypted;
}
  

но чего я не знаю, так это того, что все параметры для шифрования / дешифрования указаны открытым текстом в моем коде на сервере.

Есть ли лучший способ сделать это или я чрезмерно параноидален?