Подтвердить что ты не робот

Rails 3/Devise: соль паролей больше не создается?

Я уже давно работаю над проектом, который использует Devise для аутентификации пользователей. Всякий раз, когда пользователь был создан, он генерировал бы соль паролей для них вместе со своим зашифрованным паролем.

Поскольку я прихожу к концу этого проекта, я тестировал регистрацию пользователей и заметил, что мои новые роли не создавали соль для паролей в базе данных для этих новых пользователей, тогда как мои старшие пользователи имели соли. Новые пользователи могут подписаться в порядке, но я обеспокоен тем, почему Devise больше не создает соли.

Единственная странность с Devise, с которой я столкнулся, заключалась в том, что я должен был обновить модуль и запомнить журналы, говорящие о том, чтобы удалить шифрование, поскольку bcrypt теперь является шифрованием по умолчанию или что-то в этом роде. Что я сделал так... не уверен, что это имеет какое-то отношение к текущей проблеме.

Кроме того, подумав, возможно, это был мой проект, который был смягчен, я создал совершенно новое приложение Rails с нуля и добавил Devise к нему, и даже этот новый проект не создает соли для пользователей.

Есть ли в Devise новый способ создания паролей солей, или кто-нибудь знает, почему соли больше не создаются? К сожалению, у вики-разработчика Devise не так много сказать по этому вопросу, и Google до сих пор оказался бесплодным.

Или... даже необходимо иметь соли в первую очередь? Кажется более безопасным, чтобы иметь их, я думаю.

Мой конфигуратор пользователей/разработка ниже.

конфигурации/инициализаторы/devise.rb

Devise.setup do |config|

  config.mailer_sender = "[email protected]"

  require 'devise/orm/active_record'

  config.authentication_keys = [ :login ]

  config.stretches = 10

  config.encryptor = :bcrypt

  # Setup a pepper to generate the encrypted password.
  config.pepper = "79c2bf3b[...]"

end

приложение/модели/user.rb

  devise :database_authenticatable, :registerable, :confirmable,
         :recoverable, :rememberable, :trackable, :validatable

UPDATE

Я смог найти уведомление после того, как Devise был обновлен, что читает...

[DEVISE] From version 1.2, there is no need to set your encryptor to bcrypt since encryptors are only enabled if you include :encryptable in your models. To update your app, please:

1) Remove config.encryptor from your initializer;
2) Add t.encryptable to your old migrations;
3) [Optional] Remove password_salt in a new recent migration. Bcrypt does not require it anymore.

Итак, похоже, что пароль_salt устарел, если вы используете bcrypt, что объясняет, почему он больше не создается. Так что ответы, но другая часть моего вопроса по-прежнему остается... это достаточно хорошая практика или я должен пойти с другим шифрованием помимо bcrypt?

4b9b3361

Ответ 1

Per José Valim:

Разработать 1.2.1 не требуется password_salt больше, если вы используют bcrypt. Если вам нужен вид соли, я считаю, что есть метод называется authentication_salt. использовать для извлечения таких значений. (Источник)

Ответ 2

В новой версии dev используются символы от 0 до 29 зашифрованного пароля, как соль, и остальные символы в этом поле базы данных для зашифрованного пароля. Таким образом, ваши пароли на самом деле все еще солены с помощью BCrypt.