' P '

whatever I will forget

パスワードのHash化

セキュリティにて大事なパスワードのHash化のやり方

Hashアルゴリズム

  • MD5は古いから使わない(衝突困難性の面でリスクあり→同じHash値が生成される可能性あり)
  • SHA, bcryptoアルゴリズムの使用を推奨

パスワードのhash化

  • モジュール: htpasswd をインストールする
  • 下記コマンドを実行する
htpasswd -D users.htpasswd admin
htpasswd -D users.htpasswd guest1
htpasswd -bB users.htpasswd admin apple
htpasswd -bB users.htpasswd guest1 1234

htpasswd -Dにて、指定したユーザーのパスワードを削除
htpasswd -bBにて、指定したユーザーのパスワードをbcrypt アルゴリズムでHash化する

ランダムパスワードの生成

brute-forceでpasswordを当てられないためにも、パスワードをランダム生成するutilを生成しておくと楽
下記のコードで生成したパスワードに対して、上記のhtpasswdコマンドでパスワードを置き換えておくと良い。

'use strict';
const length = 12;
const charset =
  'abcdefghijklmnopqrstuvwxyz' + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + '0123456789';

function passwordGenerator() {
  let password = '';
  // characterでランダムな文字列をを作成
  for (let i = 0; i < length; i++) {
    password += charset[Math.floor(Math.random() * charset.length)];
  }
  // regexで小文字、大文字、英字と数字が存在するかどうかチェック
  // 上記のケースにマッチするまで処理を続行
  const includeAllTypes =
    /[a-z]/.test(password) && /[A-Z]/.test(password) && /[0-9]/.test(password);
  return includeAllTypes ? password : passwordGenerator();
}

console.log(passwordGenerator());