2011-04-09 13 views
23

He estado trabajando en un proyecto desde hace un tiempo que utiliza Devise para autenticación de usuario. Cada vez que se creaba un usuario, generaba una contraseña para ellos junto con su contraseña cifrada.Rails 3/Devise: ¿Ya no se creó la contraseña?

Como estoy llegando al final de la cola de este proyecto, que estaba probando el registro del usuario y se dio cuenta de que mis nuevos papeles no estaban creando una sal de contraseña en la base de datos para estos nuevos usuarios, mientras que mis usuarios de más edad tenían todas las 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 que los registros que dicen algo sobre la eliminación de cifrado como 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 tal vez fue mi proyecto el que me atrapó, creé una nueva aplicación Rails desde cero y agregué Devise a ella, e incluso ese nuevo proyecto no está creando ventajas para los usuarios.

¿Existe 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á a continuación./Inicializadores/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

config/user.rb

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

ACTUALIZACIÓN

yo era capaz de localizar el aviso desde que se actualizó Devise, 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 que parece que el password_salt es obsoleto si usted se pega con bcrypt, lo que explica por qué no se ha creado ya. 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?

+0

Una pequeña actualización sobre este tema: yo estaba buscando en obtener más información sobre este tema y al parecer Bcrypt encripta la sal en la contraseña, en lugar de ser una cosa separada. Eso sin duda explicaría por qué la columna de sal se dejó caer en Devise. – Shannon

Respuesta

15

por José Valim:

Diseñar 1.2.1 no requiere una columna password_salt más si está utilizando bcrypt. Si necesita un tipo de salt, creo que hay un método llamado authentication_salt que podría utilizar para recuperar dichos valores. (Source)

+0

Heh, respondiste al mismo tiempo que hice mi actualización anterior, pero es la respuesta de todos modos. ;) Si ese es el caso, ¿cree que está bien quedarse con bcrypt? – Shannon

+0

Hubiera pensado que una sal siempre era importante, pero no soy un experto en seguridad. [Esta respuesta] (http://stackoverflow.com/questions/3722780/do-any-security-experts-recommend-bcrypt-for-password-storage/3724617) puede ayudarlo un poco. – Zabba

29

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

Cuestiones relacionadas