0
0

【Rails】パスワードのハッシュ化

Posted at

パスワードのハッシュ化とは

パスワードのハッシュ化は、セキュリティ上の重要な手法であり、ユーザーのパスワードをデータベースに保存する際に平文ではなくハッシュ化された形式で保存することを意味します。これにより、パスワードがデータベース内に暗号化され、万が一データベースが漏洩しても、実際のパスワードを知ることはできなくなります。

実装手順

以下は、提供された用語を使用してパスワードのハッシュ化を実装する手順です。

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

以上の手順に従うことで、パスワードの安全なハッシュ化が実装され、データベースに保存されるパスワードが保護されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0