密码安全问题

时间:2017-07-23 12:19:49

标签: ruby-on-rails ruby authentication passwords

Web服务将用户信息存储在数据库中,并使用密码进行身份验证。以下是如何在ruby中实现用户密码存储和身份验证(实际数据存储和检索不在示例范围内):

require 'digest'

class User

  # Use salted passwords
  PASSWORD_SALT="trustno1"

  # Stored password hash will be accessible through user.hashed_password
  attr_accessor :hashed_password

  # Authenticates user against given password and returns true
  # the password matches the stored one
  def verify_password(password)
    if hashed_password.nil? || password.nil?
      false
    else
      User.hash_password(password) == hashed_password
    end
  end

  # Changes user's password
  def change_password(new_password)
    self.hashed_password = User.hash_password(new_password.to_s)
  end

  # Hashes the input with salt
  def self.hash_password(password)
    Digest::MD5.hexdigest(password + PASSWORD_SALT)
  end
end

但是,我告诉我有与密码安全相关的问题,但我找不到任何问题。

1 个答案:

答案 0 :(得分:1)

如果你真的想在rails中自己实现,你应该使用ActiveModel::SecurePassword::ClassMethods 你最大的问题是你正试图自己实现这个。搞这个太容易了。