Ticket #1196 (closed 新規開発: 無効)
【2.11系DB移行機能】顧客情報
Reported by: | Yammy | Owned by: | saiteisan |
---|---|---|---|
Priority: | 中 | Milestone: | EC-CUBE2.11.1 |
Component: | 管理画面 | Version: | 2.11.1 |
Keywords: | Cc: | ||
修正済み: | no |
Description
顧客情報CSVアップロード機能 を追加する
【総合】2.11.0へのバージョンアップについて: http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=7662&forum=15&post_id=37153#forumpost37153
のパスワードなどの暗号化の仕様変更の考慮が必要
Change History
Note: See
TracTickets for help on using
tickets.
2.11未満のバージョンからのデータ移行を考慮して、パスワード、秘密の質問の照合・更新処理を調整してみました。(r20845)
下記、データ移行の仕様のメモ
dtb_member,dtb_customerに関して、2.11未満のデータを移行しようとすると、下記のチケットでの変更を吸収しないといけない。
#818 パスワードリマインダの答えのハッシュ暗号化
#819 パスワードのハッシュ暗号化の強化
通常saltが空になることは無いと思うので、空だった場合は旧バージョンから移行されたデータと見做して、その場合にだけパスワード、秘密の質問の照合・更新処理を差し替える仕様にしています。
まず、旧バージョンからデータ移行する場合は、パスワードハッシュ、秘密の質問の答えはそのままで、saltを空にして移行します。
その際、旧バージョンのdata/mtb_constants_init.php(正確に言えばdata/cacha/mtb_constants.php)にあるAUTH_MAGICの値を、2.11.0のdata/config/config.phpに上書きも必要です。
上記の要領でdtb_member,dtb_customerのデータ移行をした前提で、プログラム側での対応をしています。
照合に関しては、単純にsaltが空だった場合に、旧バージョンでの照合方法になるように、分岐させています。
パスワード、秘密の質問を更新する場合が、少しパターンが分かれます。
dtb_memberに関しては、パスワード更新の都度、saltが更新されて、そのsaltを使用して、パスワードハッシュが2.11での暗号化方式にて更新されるので、プログラムを調整しなくても問題なかったです。
dtb_customerに関しては、パスワードと秘密の質問とでsaltを共用しているために、下記のようなパターンに分かれます。
データ移行直後の状態
salt: 空
パスワード: SHA1
秘密の質問の答え: 平文
ここから、
1.秘密の質問だけが更新される場合
salt: 更新しない
パスワード: 更新しない
秘密の質問の答え: 平文のまま更新
2.パスワードだけが更新される場合
salt: 更新する
パスワード: HMACで更新
秘密の質問の答え: DBから平文を取得し、それをHMACで更新
3.両方更新される場合
salt: 更新する
パスワード: HMACで更新
秘密の質問の答え: HMACで更新
に、分かれます。