Magento 2: डेटाबेस से ग्राहक पासवर्ड कैसे रीसेट करें


21

यह DB में ग्राहक पासवर्ड के लिए हैश है। तो MD5 और Sha1 काम नहीं कर रहा है।

UPDATE `customer_entity` SET `password` = MD5('test123') WHERE `email` = 'X@X.com';

तो डेटाबेस क्वेरी का उपयोग करके पासवर्ड कैसे अपडेट करें। हो सकता है MD5(Sha1('test123'))?

Magento कोड के माध्यम से कैसे कर रहा है। के लिए जाओvendor\magento\module-customer\Console\Command\UpgradeHashAlgorithmCommand.php

protected function execute(InputInterface $input, OutputInterface $output)
{
    $this->collection = $this->customerCollectionFactory->create();
    $this->collection->addAttributeToSelect('*');
    $customerCollection = $this->collection->getItems();
    /** @var $customer Customer */
    foreach ($customerCollection as $customer) {
        $customer->load($customer->getId());
        if (!$this->encryptor->validateHashVersion($customer->getPasswordHash())) {
            list($hash, $salt, $version) = explode(Encryptor::DELIMITER, $customer->getPasswordHash(), 3);
            $version .= Encryptor::DELIMITER . Encryptor::HASH_VERSION_LATEST;
            $customer->setPasswordHash($this->encryptor->getHash($hash, $salt, $version));
            $customer->save();
            $output->write(".");
        }
    }
    $output->writeln(".");
    $output->writeln("<info>Finished</info>");
}

कृपया @ 7ochem से उत्तर स्वीकार करने पर विचार करें। यह प्रश्न अब 3 वर्ष पुराना है और कोई स्वीकृत उत्तर नहीं है।
डैरेन फेल्टन

जवाबों:


40

यह SQL ग्राहक पासवर्ड को अपडेट करने के लिए ठीक काम करता है। Magento 2.1.5 के साथ परीक्षण किया गया।

बस नीचे "YourPASSWORD" बदलें (xxx रखें: es) और वॉइला!

UPDATE `customer_entity`
SET `password_hash` = CONCAT(SHA2('xxxxxxxxYOURPASSWORD', 256), ':xxxxxxxx:1')
WHERE `entity_id` = 1;

4
ध्यान दें कि यह अनिवार्य रूप से एक अनसाल्टेड पासवर्ड बनाएगा। यह परीक्षण प्रक्रिया के रूप में ठीक है, लेकिन इसे उत्पादन में एक नियमित विधि के रूप में इस्तेमाल नहीं किया जाना चाहिए या यह सुरक्षा को काफी कमजोर कर देगा। अधिक सुरक्षित दृष्टिकोण के लिए @ 7ochem का उत्तर देखें जो अद्वितीय लवण उत्पन्न करता है।
स्कॉट बुकानन

किसी भी तरह से! यह समाधान काम कर रहा है .. धन्यवाद @Robban
इरफान मोमिन

30

कभी भी एसक्यूए में एसएचए हैशिंग का उपयोग करने के बारे में नहीं सोचा था जब तक कि मैंने रोबन का जवाब नहीं देखा । मैं जोड़ना चाहूंगा कि आप SQL में हैश भी उत्पन्न कर सकते हैं, केवल पासवर्ड को छोड़कर जो जोड़ा जाना चाहिए। आप सभी आवश्यक मूल्यों को सेट करने के लिए चर ( सेट-स्टेटमेंट ) का उपयोग कर सकते हैं :

SET @email='emailaddress@example.com', @passwd='test@123', @salt=MD5(RAND());

UPDATE customer_entity
    SET password_hash = CONCAT(SHA2(CONCAT(@salt, @passwd), 256), ':', @salt, ':1')
    WHERE email = @email;

मुझे जनरेट पासवर्ड के साथ एक db के सभी ग्राहकों को अपडेट करने की आवश्यकता है, क्या सभी टेबल के लिए ऐसा करने का कोई तरीका है?
क्रिस्टोफ फेरेबोफ

यह थोड़ा अलग सवाल है, शायद अलग से इसका जवाब देने के लायक है। क्या आप इसे एक नए प्रश्न के रूप में पूछ सकते हैं ? मुझे इसका जवाब देने में खुशी हो रही है। कृपया सवाल में अपने Magento संस्करण को जोड़ने के लिए मत भूलना
7ochem

आपको शायद ग्राहकों के ईमेल पते के बजाय @ रॉबन के उत्तर में सही ग्राहक इकाई आईडी का उपयोग करना चाहिए। बहु-स्टोर मोड में, एक ही ईमेल पता customer_entity तालिका में कई बार दिखाई देना संभव है और आप उन सभी को अपडेट नहीं करना चाहते हैं, जब तक कि आप उन सभी को अपडेट करने का इरादा नहीं रखते हैं!
डोम

7

मुझे नहीं लगता कि DB के अंदर से पासवर्ड सेट करना संभव है। आपको SHA256ग्राहक पासवर्ड के लिए हैशिंग की आवश्यकता है । यहाँ Magento यह कैसे उत्पन्न करता है:

DB में उदाहरण पासवर्ड:

7fe8104daf9ebd5c2ac427ec7312cd9456195b1a8ade188fa8bfd35e43bc0614: 7ilBNt4q5xYUSMyv8UX2a7gkmwv051Pm: 1

यह प्रारूप है:

एक: बी: सी

कहाँ पे

बी = $salt= 32 अक्षरों का यादृच्छिक स्ट्रिंग

ए = hash('sha256', $salt . $password);

C = हैशिंग एल्गोरिथ्म संस्करण (डिफ़ॉल्ट = 1)


क्या आप उदाहरण @Aaron के साथ दे सकते हैं। मान लीजिए पासवर्ड है test। PHP / Magento उदाहरण
अंकित शाह

7

आप कमांड लाइन (CLI) पर PHP के माध्यम से आसानी से एक Magento 2 शैली पासवर्ड हैश उत्पन्न कर सकते हैं।

हैश उत्पन्न करने के लिए इस कमांड का उपयोग करें, उदाहरण के लिए पासवर्ड के लिए test123(अपने पासवर्ड में परिवर्तन करें):

php -r '$salt=md5(time());
  echo hash("sha256", $salt.$argv[1]).":$salt:1\n";' test123

यह time()नमक के रूप में वर्तमान युग के एमडी 5 ( ) का उपयोग कर रहा है, लेकिन आप कुछ और भी उपयोग कर सकते हैं।

इस जेनरेट किए गए हैश को कॉपी करें और अपने क्वेरी या डेटाबेस मैनेजमेंट टूल में कस्टमर रिकॉर्ड के password_hashकॉलम में पेस्ट करें।


2

बस नीचे mysql क्वेरी का प्रयास करें

update customer_entity set password_hash = CONCAT(md5('test123'),"::0") where entity_id = 233;

जहाँ आपके प्रयोक्ता आईडी है, वहाँ 3 मानों को अलग किया गया है: हमारे मामले में साइन इन करें

  1. सबसे पहले पासवर्ड का md5 है
  2. दूसरा खाली या अशक्त है क्योंकि हम किसी भी नमक का उपयोग नहीं कर रहे हैं
  3. तीसरा उपयोग md5 इंगित करने के लिए 0 है

एक बार जब आप इस क्वेरी को db में चलाते हैं और फिर उल्लेखित पासवर्ड का उपयोग करके लॉगिन करते हैं और डेटाबेस टेबल पर वापस जाते हैं और उस पासवर्ड की जांच करते हैं जो आपको सूचित करेगा कि Magento ने स्वचालित रूप से मानक magento2 पासवर्ड को पासवर्ड बदल दिया है यानी xxxxxx: yyyyyy: 1

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.