ruby-on-rails authentication encryption devise salt

ruby on rails - Rails 3/Devise: ¿Ya no se creó la contraseña?



ruby-on-rails authentication (2)

He estado trabajando en un proyecto desde hace un tiempo que usa Devise para autenticación de usuarios. Cada vez que se creaba un usuario, generaba una contraseña para ellos junto con su contraseña cifrada.

Como llego al final de este proyecto, estaba probando el registro de usuarios y me di cuenta de que mis nuevos roles no creaban una sal de contraseña en la base de datos para estos nuevos usuarios, mientras que todos mis antiguos usuarios tenían sales. Los nuevos usuarios pueden iniciar sesión bien, pero me preocupa por qué Devise ya no está creando sales.

La única rareza con Devise que encontré tuvo que ver cuando actualicé el módulo y recuerdo los registros que decían algo sobre eliminar encryptable, ya que bcrypt ahora es el cifrado predeterminado, o algo por el estilo. Lo cual hice ... no estoy seguro si esto tiene algo que ver con el problema actual.

Además, pensando que quizás fue mi proyecto el que más me atrapó, creé una nueva aplicación de Rails desde cero y le agregué Devise, e incluso ese nuevo proyecto no está creando ventajas para los usuarios.

¿Hay alguna manera nueva en Devise de configurar contraseñas de contraseña, o alguien sabe por qué las sales ya no se crean? Desafortunadamente, la wiki de Devise no tiene mucho que decir sobre el tema, y ​​Google ha sido una búsqueda infructuosa hasta el momento.

O ... ¿es necesario tener sales en primer lugar? Parece más seguro tenerlos, creo.

Mi configuración de usuarios / diseño está debajo.

config / initializers / 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

app / models / user.rb

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

ACTUALIZAR

Pude localizar el aviso después de que Devise se actualizó, que dice ...

[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.

Por lo tanto, parece que password_salt está en desuso si se queda con bcrypt, lo que explica por qué ya no se crea. Entonces eso responde eso, pero la otra parte de mi pregunta aún permanece ... ¿es esta una práctica lo suficientemente buena o debería ir con otra encriptación además de bcrypt?


La nueva versión de idee usa los caracteres 0 a 29 del campo de contraseña encriptada como sal y los caracteres restantes en ese campo de base de datos para la contraseña encriptada. Por lo tanto, sus contraseñas todavía están saladas con BCrypt.


Por José Valim:

Devise 1.2.1 ya no requiere una columna password_salt si está utilizando bcrypt. Si necesita un tipo de sal, creo que hay un método llamado authentication_salt que puede usar para recuperar dichos valores. (Source)