2011-04-09 11 views
23

मैं थोड़ी देर के लिए एक परियोजना पर काम कर रहा हूं जो उपयोगकर्ता प्रमाणीकरण के लिए डेविस का उपयोग करता है। जब भी कोई उपयोगकर्ता बनाया गया था, तो यह उनके एन्क्रिप्टेड पासवर्ड के साथ उनके लिए एक पासवर्ड नमक उत्पन्न करेगा।रेल 3/देवता: पासवर्ड नमक अब नहीं बनाया जा रहा है?

जैसा कि मैं इस परियोजना के पूंछ के अंत में आ रहा हूं, मैं उपयोगकर्ता पंजीकरण का परीक्षण कर रहा था और देखा कि मेरी नई भूमिकाएं इन नए उपयोगकर्ताओं के लिए डेटाबेस में पासवर्ड नमक नहीं बना रही थीं, जबकि मेरे पुराने उपयोगकर्ताओं के पास लवण था। नए उपयोगकर्ता ठीक से साइन इन कर सकते हैं, फिर भी मुझे चिंता है कि डेविस अब लवण क्यों नहीं बना रहा है।

डेविस I के साथ एकमात्र विषमता को तब करना पड़ा जब मैंने मॉड्यूल को अपग्रेड किया और एन्क्रिप्टेबल को हटाने के बारे में कुछ कहने वाले लॉग याद रखें क्योंकि अब bcrypt को डिफ़ॉल्ट एन्क्रिप्शन या उस प्रभाव के लिए कुछ है। मैंने ऐसा किया ... सुनिश्चित नहीं है कि वर्तमान मुद्दे के साथ इसका कोई संबंध नहीं है।

इसके अलावा, सोच रहा है कि यह मेरी परियोजना थी जो धोखा दे रहा था, मैंने स्क्रैच से एक नया रेल रेल एप्लिकेशन बनाया और इसमें डेविस जोड़ा, और यहां तक ​​कि वह नई परियोजना उपयोगकर्ताओं के लिए लवण नहीं बना रही है।

क्या डेविस में पासवर्ड लवण सेट अप करने का कोई नया तरीका है, या क्या किसी को पता है कि लवण अब और क्यों नहीं बनाए जा रहे हैं? दुर्भाग्य से डेविस विकी के पास इस विषय पर कुछ कहना नहीं है, और Google अब तक एक निष्फल खोज रहा है।

या ... क्या पहले स्थान पर लवण रखना भी आवश्यक है? उन्हें रखने के लिए और अधिक सुरक्षित लगता है, मुझे लगता है।

उपयोगकर्ताओं/devise की मेरी कॉन्फ़िगरेशन नीचे है।

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 

एप्लिकेशन/मॉडल/user.rb

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

अद्यतन

मैं नोटिस पता लगाने में सक्षम था डेविस के उन्नयन के बाद से, जो पढ़ता है ...

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

तो ऐसा लगता है कि password_salt अगर आप bcrypt साथ चिपके रहते हैं, जो बताता है कि क्यों इसे अब और नहीं बनाया है मान्य नहीं है। तो इसका उत्तर है, लेकिन मेरे प्रश्न का दूसरा हिस्सा अभी भी बना हुआ है ... क्या यह एक अच्छा पर्याप्त अभ्यास है या क्या मुझे बीसीआरपी के अलावा एक और एन्क्रिप्शन के साथ जाना चाहिए?

+0

इस विषय पर एक छोटा सा अपडेट: मैं इस विषय पर अधिक जानकारी देख रहा था और स्पष्ट रूप से बीक्रीप्ट एक अलग चीज़ होने के बजाय, नमक को पासवर्ड में एन्क्रिप्ट करता है। यह निश्चित रूप से बताएगा कि डेविस में नमक स्तंभ क्यों गिरा दिया गया था। – Shannon

उत्तर

15

प्रति जोस Valim:

वसीयत 1.2.1 अब एक password_salt स्तंभ की आवश्यकता नहीं है अगर आप bcrypt उपयोग कर रहे हैं। यदि आपको नमक के की आवश्यकता है, तो मेरा मानना ​​है कि प्रमाणीकरण_साल्ट नामक एक विधि है जिसे आप ऐसे मानों को पुनर्प्राप्त करने के लिए उपयोग कर सकते हैं। (Source)

+0

हे, आपने उसी समय उत्तर दिया जब मैंने अपना अपडेट ऊपर दिया, लेकिन यह सब जवाब है। ;) यदि ऐसा है, तो लगता है कि bcrypt के साथ रहना ठीक है? – Shannon

+0

मैंने सोचा होगा कि नमक हमेशा महत्वपूर्ण था, लेकिन मैं कोई सुरक्षा विशेषज्ञ नहीं हूं। [यह उत्तर] (http://stackoverflow.com/questions/3722780/do-any-security-experts-recommend-bcrypt-for-password-storage/3724617) कुछ हद तक आपकी मदद कर सकता है। – Zabba

29

वसीयत के नए संस्करण पात्रों 0 नमक के रूप में एन्क्रिप्टेड पासवर्ड क्षेत्र के 29 करने के लिए एन्क्रिप्टेड पासवर्ड के लिए कि डाटाबेस क्षेत्र में शेष वर्ण का उपयोग करता है और। तो आपके पासवर्ड वास्तव में अभी भी बीसीआरपीटी के साथ नमकीन हैं।

संबंधित मुद्दे