パスワードは保存するときにハッシュ化する
パスワードが平文で保存されていると、脆弱性でパスワードが漏れたとき大変なことになる。
なぜパスワードが漏れることが良くないか
漏れたパスワードからユーザーがリスト型攻撃に合う。
他のサービスで同一パスワードを使用してるユーザーが不正アクセスに合う可能性がある。
ユーザーから信用がなくなる
最悪サービス終了
会社が傾く
よくある間違い
パスワードを平文で保存する
あり得ない。
サービスを停止してユーザーのパスワードををリセットするレベルの事案。
DBやアプリのログにパスワードが乗ってしまっている可能性すらあるので要調査。
パスワードを暗号化して保存する
暗号化していても鍵がわかってしまえばパスワードが復号化できてしまうため不適切。
復号化できてしまうリスクをわざわざ増やすべきではない。
パスワードをMD5やSHA1等のハッシュ関数を使用し独自実装する
多くのプログラムが利用する信頼性が高いハッシュ化実装を利用するべき。
独自実装してバグと脆弱性を出すリスクをわざわざ増やすべきではない。
実装方法
既存の実装を利用する。標準ライブラリか有名なOSSがどの言語でもあると思う。
BCrypt
PBKDF2
Argon2