ruby on rails रेल 3/देवता: पासवर्ड नमक अब नहीं बनाया जा रहा है?




ruby-on-rails authentication (2)

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

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

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

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

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

क्या डेविस में पासवर्ड लवण सेट अप करने का कोई नया तरीका है, या क्या किसी को पता है कि लवण क्यों नहीं बनाए जा रहे हैं? दुर्भाग्य से डेविस विकी के पास इस विषय पर कुछ कहना नहीं है, और 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.

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


प्रति जोसे वैलीम:

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





salt