В приложениях, которые обрабатывают аутентификацию пользователей, пароли хранятся в виде простого текста, не должно быть вариантом. Вы несете ответственность за наблюдать и обеспечить безопасность этих данных, поэтому, всегда должны зашифровать все пароли и не хранить пароли неформатированного текста. В этой статье мы узнаем, как зашифровать пароли с помощью технической соли. Я буду использовать примеры в JavaScript, чисто и ES5.
Что такое техническая Соль?
Техника salt (соль португальский), состоит в том, чтобы взять пользователя, пароль и зашифровать вместе с набором текста одного и случайного и сохранить результат в базе, как пароль, как текст используется в качестве соли.
Потому что использовать технику Salt?
— Шифрование пароля-это же всегда тот пароль, хотя шифрование, то есть через руки, не удается расшифровать, есть таблицы, которые хранят этот зашифрованный текст и исходный текст ссылки, что облегчает для злоумышленников получить этот хэш. При добавлении salt уникальной для каждого пароля, гарантируем, что результат создается шифрования уникален, и это затрудняет идентификацию их.
И технику, Salt and Pepper?
Существуют и другие способы, чтобы безопасно хранить пароли, вариант salt — это salt and pepper, который состоит из а также хранить в солт-единственный на пользователя, соответствовать pepper (перец чили), в основном ключа в текст создается на уровне применения и общие для всех паролей. Многие утверждают, что принимая этот слой безопасности на уровне приложений предотвращает возможные лазейки для доступа к вашей базе может поставить под угрозу пароли, когда злоумышленники получат доступ к salt также. Проблема этого метода заключается в обслуживании, так как вам нужно хранить смело этот текст, и в случае какой-либо лазейку, с пеппер все пароли будут защищены..
Шаги процесса
Короче, практика этого метода будет:
Создания и хранения паролей
- Получить пароль пользователя
- Создать salt (текст randomico)
- Объединить salt пароль
- Зашифровать паролем и salt
- Salvaremos результат пароля, а также используется salt
Подтверждение пароля
- Проверки электронной почты (идентификатор пользователя) и поиск в базе данных, salt
- Сочетать соль с пароль
- Зашифровать пароль, введенный и salt
- Сравнить этот пароль (хэш), хранящиеся в хэш сохраняется в базе
В этой статье мы не будем рассматривать полный процесс, для шифрования мы будем использовать библиотеку родной 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; } |
Заключение
Узнаем процесс создания пароля и шифрования безопасный способ хранения в нашей базе. Роли-это лишь примеры основных метода, рекомендую, улучшите и подходит к вашей ситуации.