Skip to content

Latest commit

 

History

History
32 lines (24 loc) · 3.06 KB

bcryptpasswords.russian.md

File metadata and controls

32 lines (24 loc) · 3.06 KB

Не используйте криптографическую библиотеку Node.js для паролей, используйте Bcrypt

Объяснение в один абзац

При хранении паролей пользователей рекомендуется использовать адаптивный алгоритм хеширования, такой как bcrypt, предлагаемый bcrypt npm module, а не использовать собственный криптографический модуль Node.js. , Math.random() также никогда не следует использовать как часть генерации пароля или токена из-за его предсказуемости.

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

Пример кода

try {
// asynchronously generate a secure password using 10 hashing rounds
  const hash = await bcrypt.hash('myPassword', 10);
  // Store secure hash in user record

  // compare a provided password input with saved hash
  const match = await bcrypt.compare('somePassword', hash);
  if (match) {
   // Passwords match
  } else {
   // Passwords don't match
  } 
} catch {
  logger.error('could not hash password.')
}

Что говорят другие блогеры

Из блога Max McCarty:

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