Шифрование и Хранение Паролей с NodeJS – Лучшие упражнения для закрепления

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

Что такое техническая Соль?

Техника salt (соль португальский), состоит в том, чтобы взять пользователя, пароль и зашифровать вместе с набором текста одного и случайного и сохранить результат в базе, как пароль, как текст используется в качестве соли.

Потому что использовать технику Salt?

— Шифрование пароля-это же всегда тот пароль, хотя шифрование, то есть через руки, не удается расшифровать, есть таблицы, которые хранят этот зашифрованный текст и исходный текст ссылки, что облегчает для злоумышленников получить этот хэш. При добавлении salt уникальной для каждого пароля, гарантируем, что результат создается шифрования уникален, и это затрудняет идентификацию их.

И технику, Salt and Pepper?

Существуют и другие способы, чтобы безопасно хранить пароли, вариант salt — это salt and pepper, который состоит из а также хранить в солт-единственный на пользователя, соответствовать pepper (перец чили), в основном ключа в текст создается на уровне применения и общие для всех паролей. Многие утверждают, что принимая этот слой безопасности на уровне приложений предотвращает возможные лазейки для доступа к вашей базе может поставить под угрозу пароли, когда злоумышленники получат доступ к salt также. Проблема этого метода заключается в обслуживании, так как вам нужно хранить смело этот текст, и в случае какой-либо лазейку, с пеппер все пароли будут защищены..

Шаги процесса

Короче, практика этого метода будет:

Создания и хранения паролей

  1. Получить пароль пользователя
  2. Создать salt (текст randomico)
  3. Объединить salt пароль
  4. Зашифровать паролем и salt
  5. Salvaremos результат пароля, а также используется salt

Подтверждение пароля

  1. Проверки электронной почты (идентификатор пользователя) и поиск в базе данных, salt
  2. Сочетать соль с пароль
  3. Зашифровать пароль, введенный и salt
  4. Сравнить этот пароль (хэш), хранящиеся в хэш сохраняется в базе

В этой статье мы не будем рассматривать полный процесс, для шифрования мы будем использовать библиотеку родной Crypto и часть базы simularemos с console.log.

Давайте кода

Сначала нам нужно импортировать модуль crypto

var crypto = require('crypto');

Функции для создания Salt

Для создания солт мы будем использовать функции самого модуля crypto, что уже создает string randômica, мы будем использовать » строка до 16 знаков, как наш salt.

function gerarSalt(){
    return  crypto.randomBytes(16).toString('hex');
};

Функции для шифрования пароля с соль

Сделаем теперь функция отвечает за добавление соли и пароль, который возвращает объект с зашифрованные хэш генерируется и соли. Будем использовать алгоритм шифрования, sha512.

function sha512(senha, salt){
    var hash = crypto.createHmac('sha512', salt); // Algoritmo de cripto sha512
    hash.update(senha);
    var hash = hash.digest('hex');
    return {
        salt,
        hash,
    };
};

Функцию для создания нового хэша пароля

Давайте создадим гора функцию, которая генерирует новый пароль для пользователя, он может быть использован при регистрации или обновления пароля.

function gerarSenha(senha) {
    var salt = gerarSalt(16); // Vamos gerar o salt
    var senhaESalt = sha512(senha, salt); // Pegamos a senha e o salt
    // A partir daqui você pode retornar a senha ou já salvar no banco o salt e a senha
    console.log('Senha Hash: ' + senhaESalt.hash);
    console.log('Salt: ' + senhaESalt.salt);
}
saltHashPassword('123456');
saltHashPassword('ABC123');

Проверка пароля (логин)

Теперь, когда мы сохраняем хэш пароля и соль в банк, нужно функции для проверки подлинности пользователя в нашем приложении:

function login(senhaDoLogin, saltNoBanco, hashNoBanco) {
   var senhaESalt = sha512(senhaDoLogin, saltNoBanco)
   return hashNoBanco === senhaESalt.hash;
}

Заключение

Узнаем процесс создания пароля и шифрования безопасный способ хранения в нашей базе. Роли-это лишь примеры основных метода, рекомендую, улучшите и подходит к вашей ситуации.

Сохранить себе или поделиться:

Add a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *