個人開発しているウェブアプリで、まさかのパスワードを平文で保存するようにしているため、早急にハッシュ化して保存するように改修します
bcryptパッケージで暗号化する
Goに標準で良いされているbcryptパッケージを利用して簡単にハッシュ化できます
参考にさせていただいたのは以下のページ
https://zenn.dev/kou_pg_0131/articles/go-digest-and-compare-by-bcrypt
以下のように実装していました
// パスワード暗号化
hashed, err := bcrypt.GenerateFromPassword([]byte(register.Password), 10)
if err != nil {
e.Logger.Error("パスワードハッシュ化に失敗しました")
e.Logger.Error(err.Error())
return false, nil
}
フレームワークにEchoを使っています。eはEchoになります。
無事にパスワードがハッシュ化されました!
ハッシュ化されたパスワードと認証用のパスワードを検証する方法は以下になります
err := bcrypt.CompareHashAndPassword(hashed, password)
パスワードが正しい場合にnilが返却されるという仕様に注意しておきたいところ
以上です
Goでパスワードをハッシュ化するときの方法をざっくり紹介しました
パスワードの平文保存はやめましょう(戒め)
パスワードを平文で保存してしまうと、万が一情報漏洩が起こった場合、流出したパスワードをもとに他の色々なサイトに対して不正ログインを行うための情報に利用されてしまいます
created by Rinker
¥3,960
(2024/10/27 13:52:05時点 楽天市場調べ-詳細)
created by Rinker
¥3,608
(2024/10/27 14:16:59時点 楽天市場調べ-詳細)