0

プロジェクト サイトを magento から django に移行しました。これは何百万ものユーザーがいるサイトです。私はサイトからすべてのデータを正常にインポートしましたが、私が抱えている主な問題は、特にパスワードを使用して顧客データベースを移行することです.djangoサイトの各顧客に新しいパスワードを与えることは明らかに時間がかかるため. また、顧客がパスワードをリセットすることは非常に苛立たしく、多くの顧客がサイトから失われます。

データベースからmagentoで顧客のパスワードを取得する方法を教えてください。

4

5 に答える 5

3

パスワードを復元することはできません。Magento は、ソルトを含むハッシュを使用してパスワードを保存します (エディションによると md5 および sha1)。

できることのみ - パスワードをリセットするか、magento で行われているのと同じパスワードをチェックする機能をサイトに実装します。

于 2013-01-11T06:58:50.893 に答える
1

レガシー システムの古くて弱いハッシュを保持すると、ユーザーが危険にさらされます。

攻撃者 (または悪意のある管理者) がハッシュとユーザー データにアクセスした場合、それらを簡単にクラックし (例: http://hashcat.net/oclhashcat-plus/を参照)、ユーザーが使用しているサービスに対してグローバルに使用できます。 (もちろん、ユーザーはパスワードを再利用したり、強力なパスワードを使用したりすることはお勧めしませんが、多くの人はこれを知らないか無視します)。

弱いハッシュは、bcrypt、pbkdf2、shaXXX_crypt以外のものに関するものです。ランダムにソルトされた sha256 のようなものでさえ、弱いと見なす必要があります。

したがって、適切な手順は次のようになります。

  1. 弱いハッシュを直接サポートしないでください
  2. 弱いハッシュをインポートしますが、強いアルゴリズムを使用して再度ハッシュします: strong(weak(cleartext))
  3. ログイン時に、二重ハッシュされたものを単に強力な (クリアテキスト) にアップグレードします
  4. しばらくこのモードでシステムを実行すると、頻繁に使用するユーザーは強力な (平文の) ハッシュを持つことになります。
  5. 内部の weak() ハッシュを取り除くには、そのようなハッシュをすべて無効にし (これは使用頻度の低いユーザーにのみ影響します)、ユーザーにパスワード リセット リンクと問題が発生した場合の連絡先情報を送信します。電子メールでは、セキュリティを非常に重視しており、セキュリティを向上させるためにリセットが必要であることを指摘できます。使用頻度の低いユーザーがまだあなたのサービスに興味を持っている場合は、パスワードをリセットするだけです。彼がもう興味がなければ、メールを無視します。いずれにせよ、パスワード ストレージにダブル ハッシュされた pw はもうありませんが、無効なものだけになります。
  6. サイト構成での二重ハッシュのために、内部の weak() ハッシュのサポートを無効にします。
  7. ソフトウェアでの内部ハッシュ/ダブル ハッシュのサポートを廃止します。
  8. 後で、ソフトウェアの内部ハッシュ/ダブル ハッシュのサポートを削除して、簡素化します。

注: レガシー システムにセキュリティ違反があった場合、古いハッシュを使用することはできません。パスワードが公開されることを考慮する必要があるからです。

于 2013-02-24T15:38:34.410 に答える
1

一見すると、django が使用するパスワードを保存しているように見えmd5${salt}${hashed_password}、ソルトが先頭に追加されます。この場合、Magento のパスワードを取得し、文字列を再フォーマットして、django のパスワード チェックに合格できるようにする必要があります。

$hashArr = explode(':', $hash);
$newPasswordString = 'md5$'.$hashArr[1].'$'.$hashArr[0];

この回答の実行可能性/正確性は、Community / Professional または Enterprise のどちらを使用しているかによって異なります。コードはコミュニティ コードに基づいています。これは、より自由に共有できるためです。実装によっては、エンタープライズで同じことが可能である場合と不可能である場合があります。確認する必要がありますMage_Core_Model_Encryption:validateHash

于 2013-01-11T09:33:39.470 に答える
0

Cagsによる答えは私にとってはうまくいきます。Magento community edition 1.7 から Django-Oscar に移行しています。

移動するユーザーは数百人しかいませんが、パスワードをリセットすることはできませんでした。

便宜上...

彼のコードの python バージョン:

hash = xxxxxxxxxxxxxxxxx:xx  # The hash from Magento DB table customer_entity_varchar
splithash = hash.split(':')
djangopass = 'md5$' + splithash[1] + '$' + splithash[0]
于 2013-02-17T19:14:58.377 に答える
0

これは、クエストのガイドになる可能性があります。

magento エンタープライズ エディションのパスワードを解読するには?

于 2013-01-11T08:19:57.173 に答える