パスワードのハッシュ化とは
パスワードのハッシュ化は、セキュリティ上の重要な手法であり、ユーザーのパスワードをデータベースに保存する際に平文ではなくハッシュ化された形式で保存することを意味します。これにより、パスワードがデータベース内に暗号化され、万が一データベースが漏洩しても、実際のパスワードを知ることはできなくなります。
実装手順
以下は、提供された用語を使用してパスワードのハッシュ化を実装する手順です。
1. gem bcrypt
bcrypt
は、パスワードの安全なハッシュ化を行うためのライブラリであり、Ruby on Railsのプロジェクトで使用されることがあります。Gemfileにbcrypt
を追加して、bundle install
コマンドを実行してインストールします。
Gemfile:
gem 'bcrypt', '~> 3.1.7'
ターミナル:
$ bundle install
2. password_digestカラム
ユーザーのパスワードをハッシュ化して保存するために、データベースのテーブルにpassword_digest
という名前のカラムを追加します。このカラムには、ハッシュ化されたパスワードが保存されます。
例えば、User
モデルにpassword_digest
カラムを追加する場合は、マイグレーションファイルを作成し、password_digest
カラムを追加します。
ターミナル:
$ rails generate migration add_password_digest_to_users password_digest:string
生成されたマイグレーションファイル:
class AddPasswordDigestToUsers < ActiveRecord::Migration[6.0]
def change
add_column :users, :password_digest, :string
end
end
ターミナル:
$ rails db:migrate
3. has_secure_password
has_secure_password
は、Active Recordモデルでパスワードのハッシュ化と認証を行うためのメソッドです。これを使用すると、モデル内でパスワードの検証とセットアップが簡単に行えます。
例えば、User
モデルでhas_secure_password
を使用する場合は、以下のように記述します。
class User < ApplicationRecord
has_secure_password
end
4. remove_column
remove_column
は、データベースのテーブルからカラムを削除するためのマイグレーションメソッドです。ハッシュ化前のパスワードを格納していたpassword
カラムなどを削除する場合に使用されます。
例えば、User
モデルからpassword
カラムを削除する場合は、以下のようにマイグレーションファイルを作成します。
ターミナル:
$ rails generate migration remove_password_from_users password:string
生成されたマイグレーションファイル:
class RemovePasswordFromUsers < ActiveRecord::Migration[6.0]
def change
remove_column :users, :password, :string
end
end
ターミナル:
$ rails db:migrate
以上の手順に従うことで、パスワードの安全なハッシュ化が実装され、データベースに保存されるパスワードが保護されます。