ম্যাজেন্টো 2: কীভাবে ডাটাবেস থেকে গ্রাহক পাসওয়ার্ড পুনরায় সেট করবেন


21

এটি ডিবিতে গ্রাহকের পাসওয়ার্ডের জন্য হ্যাশ। সুতরাং MD5 & Sha1 কাজ করছে না।

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

সুতরাং কিভাবে ডাটাবেস ক্যোয়ারী ব্যবহার করে পাসওয়ার্ড আপডেট করবেন। হতে পারে MD5(Sha1('test123'))?

ম্যাজেন্টো কীভাবে কোডের মাধ্যমে করছে। যাও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

এই এসকিউএল গ্রাহকের পাসওয়ার্ড আপডেট করার জন্য ঠিক কাজ করে। ম্যাজেন্টো 2.1.5 দিয়ে পরীক্ষা করেছেন।

কেবল নীচে "YOURPASSWORD" পরিবর্তন করুন (এক্সএক্সএক্স রাখুন: এস) এবং ভয়েলা!

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

4
নোট করুন যে এটি মূলত একটি নিরবিচ্ছিন্ন পাসওয়ার্ড তৈরি করবে। এটি একটি পরীক্ষার পদ্ধতি হিসাবে ঠিক আছে, তবে উত্পাদনের নিয়মিত পদ্ধতি হিসাবে ব্যবহার করা উচিত নয় বা এটি সুরক্ষা উল্লেখযোগ্যভাবে দুর্বল করে দেবে। অনন্য লবণের উত্পাদন করে এমন আরও সুরক্ষিত পদ্ধতির জন্য @ 7ochem এর উত্তর দেখুন।
স্কট বুচানান

যেভাবেই হোক! এই সমাধানটি কাজ করছে .. ধন্যবাদ @ রব্বান
ইরফান মমিন

30

কখনও SQL এর যে রয়েছে SHA হ্যাশ ব্যবহার সরাসরি পর্যন্ত আমি দেখেছি চিন্তা Robban এর উত্তর । আমি যুক্ত করতে চাই যে আপনি এসকিউএল-তেও হ্যাশ তৈরি করতে পারেন, কেবল যুক্ত হওয়া পাসওয়ার্ড রেখে। সমস্ত প্রয়োজনীয় মান সামনে রেখে আপনি ভেরিয়েবল ( সেট-স্টেটমেন্ট ) ব্যবহার করতে পারেন :

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;

উত্পন্ন পাসওয়ার্ড সহ আমার এক ডিবির সমস্ত গ্রাহককে আপডেট করতে হবে, সমস্ত টেবিলের জন্য এটি করার কোনও উপায় আছে কি?
ক্রিস্টোফ ফেরেবুয়েফ

এটি কিছুটা আলাদা প্রশ্ন, এটি আলাদাভাবে উত্তর দেওয়া ভাল। আপনি এটি একটি নতুন প্রশ্ন হিসাবে জিজ্ঞাসা করতে পারেন ? আমি এর উত্তর দিতে খুশি। প্রশ্নটিতে আপনার ম্যাজেন্টো সংস্করণটি যুক্ত করতে ভুলবেন না
ইচেম

আপনার সম্ভবত গ্রাহকদের ইমেল ঠিকানার চেয়ে @ রব্বানের উত্তরের মতো সঠিক গ্রাহক সত্তা আইডি ব্যবহার করা উচিত। মাল্টি-স্টোর মোডে একই ইমেল ঠিকানাটি গ্রাহক_সেন্টিটি টেবিলটিতে একাধিকবার প্রদর্শিত হওয়া সম্ভব এবং আপনি যদি সেগুলি আপডেট করার ইচ্ছা না করেন তবে আপনি সেগুলি আপডেট করতে চান না!
ডম

7

আমি মনে করি না যে ডিবি থেকে পাসওয়ার্ড সেট করা সম্ভব possible SHA256গ্রাহকের পাসওয়ার্ডগুলির জন্য আপনার হ্যাশিং দরকার । ম্যাজেন্টো এটি কীভাবে উত্পন্ন করে তা এখানে রয়েছে:

ডিবিতে পাসওয়ার্ডের উদাহরণ:

7fe8104daf9ebd5c2ac427ec7312cd9456195b1a8ade188fa8bfd35e43bc0614: 7ilBNt4q5xYUSMyv8UX2a7gkmwv051Pm: 1

এটি ফর্ম্যাট:

উত্তর: খ: সি

কোথায়

বি = $salt= 32 টি অক্ষরের এলোমেলো স্ট্রিং

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

সি = হ্যাশিং অ্যালগরিদম সংস্করণ (ডিফল্ট = 1)


আপনি উদাহরণস্বরূপ @ অ্যারন দিয়ে দিতে পারেন? ধরুন পাসওয়ার্ড test। পিএইচপি / ম্যাজেন্টো উদাহরণ
অঙ্কিত শাহ

7

আপনি কমান্ড লাইনে পিএইচপি (সিএলআই) এর মাধ্যমে খুব সহজেই একটি ম্যাজেন্টো 2 স্টাইলের পাসওয়ার্ড হ্যাশ তৈরি করতে পারেন।

পাসওয়ার্ডের উদাহরণ হিসাবে হ্যাশ তৈরি করতে এই কমান্ডটি ব্যবহার করুন test123(এটি নিজের পাসওয়ার্ডে পরিবর্তন করুন):

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

এটি বর্তমান যুগের MD5 ব্যবহার করে time()লবণ হিসাবে ব্যবহার করছে তবে আপনি অন্য কিছু ব্যবহার করতে পারেন।

এই উত্পন্ন হ্যাশটি অনুলিপি করুন এবং এটি আপনার গ্রাহক রেকর্ডের password_hashকলামে আপনার ক্যোয়ারী বা ডাটাবেস পরিচালনা সরঞ্জামে আটকান ।


2

কেবল নীচের মাইএসকিএল কোয়েরিটি চেষ্টা করে দেখুন

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

যেখানে সত্তা_আইডি আপনার ব্যবহারকারী আইডি রয়েছে সেখানে 3 টি মান পৃথক করে: সাইন ইন আমাদের ক্ষেত্রে

  1. প্রথমটি পাসওয়ার্ডের এমডি 5
  2. দ্বিতীয়টি খালি বা নাল হ'ল আমরা কোনও লবণ ব্যবহার করছি না
  3. তৃতীয়টি এমডি 5 ব্যবহার নির্দেশ করতে 0

আপনি একবার ডিবিতে এই ক্যোয়ারী চালান এবং তারপরে উল্লিখিত পাসওয়ার্ডটি ব্যবহার করে লগইন করুন এবং ডাটাবেস টেবিলটিতে ফিরে যান এবং পাসওয়ার্ডটি পরীক্ষা করে দেখবেন যে ম্যাজেন্টো স্বয়ংক্রিয়ভাবে পাসওয়ার্ডটিকে স্ট্যান্ডার্ড ম্যাজেন্টো 2 পাসওয়ার্ডে অর্থাৎ xxxxxx: yyyyyy: 1 এ পরিবর্তন করেছে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.