Один из лучших способов безопасного хранения паролей — это их соль и хеширование. Соление и хеширование преобразуют простой пароль в уникальное значение, которое трудно отменить. Библиотека bcrypt позволяет хешировать и солить пароли в Node.js с минимальными усилиями.

Что такое хеширование паролей?

Хэширование пароля означает передачу простого текстового пароля через алгоритм хеширования для создания уникального значения. Некоторыми примерами алгоритмов хеширования являются bcrypt, scrypt и SHA. Недостатком хэширования является то, что оно предсказуемо.

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

Что такое соление пароля?

Посолка пароля добавляет случайную строку (соль) к паролю перед его хешированием. Таким образом, сгенерированный хэш каждый раз будет разным. Даже если хакер получит хешированный пароль, ему будет нецелесообразно обнаружить исходный пароль, который его сгенерировал.

instagram viewer

Как использовать bcrypt для хеширования и проверки пароля

bcrypt — это модуль npm, упрощающий добавление и хеширование паролей.

Шаг 1: Установите bcrypt

Использование нпм:

нпм установить bcrypt

Использование пряжи:

пряжа добавить bcrypt

Шаг 2: Импортируйте bcrypt

константа бкрипт = требовать(«Бикрипт»)

Шаг 3: Создайте соль

Чтобы сгенерировать соль, вызовите bcrypt.genSalt() метод. Этот метод принимает целочисленное значение, которое является фактором стоимости, определяющим время, необходимое для хеширования пароля. Чем выше фактор стоимости, тем больше времени занимает алгоритм и тем сложнее реверсировать хеш с помощью грубой силы. Хорошее значение должно быть достаточно высоким, чтобы защитить пароль, но и достаточно низким, чтобы не замедлять процесс. Обычно он колеблется от 5 до 15. В этом уроке мы будем использовать 10.

bcrypt.genSalt (10, (ошибка, соль) => {
// использоватьсолькхэшпароль
})

Шаг 4: Хэшируйте пароль

Передайте простой пароль и сгенерированную соль в хеш() метод:

bcrypt.genSalt (10, (ошибка, соль) => {
bcrypt.hash (открытый текстовый пароль, соль, функция(ошибка, хэш) {
// Сохраняем хэш в базе данных
});
})

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

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

bcrypt.hash (открытый текстовый пароль, 10, функция(ошибка, хэш) {
// сохраняем хеш в базе данных
});

Шаг 5. Сравните пароли с помощью bcrypt

К аутентифицировать пользователей, вам нужно будет сравнить пароль, который они предоставляют, с паролем в базе данных. bcrypt.compare() принимает простой текстовый пароль и хэш, который вы сохранили, а также функцию обратного вызова. Этот обратный вызов предоставляет объект, содержащий все возникшие ошибки и общий результат сравнения. Если пароль совпадает с хешем, результат верен.

bcrypt.compare (пароль простого текста, хэш, функция(ошибка, результат) {
если (результат) {
// пароль действителен
}
});

Использование асинхронного/ожидания

Вы можете хешировать и проверять пароли с помощью async/await следующим образом.

асинхронныйфункцияhashPassword(открытый текстПароль) {
константа хэш = Ждите bcrypt.hash (открытый текстовый пароль, 10);
// Сохраняем хэш в базе данных
}

// сравнить пароль
асинхронныйфункциясравнить пароль(открытый текстПароль, хэш) {
константа результат = Ждите bcrypt.compare (открытый текстовый пароль, хэш);
возврат результат;
}

Использование промисов

Библиотека bcrypt также поддерживает использование промисов.

функцияhashPassword(открытый текстПароль) {
bcrypt.хэш(открытый текстПароль, 10)
.тогда (хэш => {
// Сохраняем хэш в базе данных
})
.ловить(ошибка => {
консоль.лог (ошибка)
})
}

функциясравнить пароль(открытый текстПароль, хэш) {
bcyrpt.сравнивать(открытый текстПароль, хэш)
.тогда (результат => {
возврат результат
})
.ловить(ошибка => {
консоль.лог (ошибка)
})
}

Хеширование и соление — легкая победа

Вы можете использовать библиотеку bcrypt для хеширования и проверки паролей в Node.js. Хеширование паролей сводит к минимуму вероятность их использования киберпреступниками для доступа к конфиденциальным данным или услугам. Добавление соли к хешированным паролям делает их еще более безопасными. Помимо хеширования, всегда проверяйте надежность пароля в качестве дополнительной меры безопасности.

8 самых распространенных трюков, используемых для взлома паролей

Читать дальше

ДелитьсяТвитнутьДелитьсяЭл. адрес

Похожие темы

  • Программирование
  • Безопасность
  • Программирование
  • JavaScript
  • Безопасность
  • Алгоритмы

Об авторе

Мэри Гатони (опубликовано 21 статья)

Мэри Гатони — разработчик программного обеспечения, страстно любящий создавать технический контент, который не только информативен, но и привлекателен. Когда она не программирует и не пишет, ей нравится проводить время с друзьями и гулять на свежем воздухе.

Еще от Мэри Гатони

Подпишитесь на нашу рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться