質問 > 管理機能 > 会員パスワード生成ロジックを作成したい |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
h_tanaka |
投稿日時: 2017/8/3 12:04
対応状況: 解決済
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
会員パスワード生成ロジックを作成したい EC-CUBE3.0.14
別システムからの顧客データの移行で、パスワードの作成に行き詰まっています。 移行元ではパスワードは平文で扱っていました。 EC-CUBE3の会員情報更新時のパスワード生成ロジックを抜粋してパスワード作成プラグラムを作成しようとしています。 Saltの発行ロジックは次から抜粋しました。 src/Eccube/Controller/Admin/Customer/CustomerEditController.php src/Eccube/Repository/CustomerRepository.php vendor/symfony/security/Core/Util/SecureRandom.php 問題は、SecureRandom.php で呼んでいる関数 random_bytes() がどこに定義されているかがわからないことです。 ソース内をgrep検索したところ6件の関数定義が見つかりましたがどれが呼ばれているかわかりません。 どなたかわかりますでしょうか? 以下、作成途中のパスワード作成プラグラムです。
|
nyorai |
投稿日時: 2017/8/3 14:16
対応状況: −−−
|
仙人 登録日: 2015/8/21 居住地: 投稿: 302 |
Re: 会員パスワード生成ロジックを作成したい random_bytesはphpの標準関数ですね。
http://php.net/manual/ja/function.random-bytes.php これはphp7から追加された関数です。php7で実行する場合は特に意識する必要はないです。 grepで引っかかるのは、たぶんparagonie/random_compatで提供されてるものかなと思います。 これは新しく追加された関数をphpの下位バージョンでも使えるようにしてくれるライブラリです。 実行する環境に応じて適切な関数呼び出しをしてくれます。 https://github.com/paragonie/random_compat なのでrandom_byteは特に気にしなくてもよいのかなと思います。 |
h_tanaka |
投稿日時: 2017/8/3 14:38
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
Re: 会員パスワード生成ロジックを作成したい nyorai さん、
まさにおっしゃるとおりです。 ただ、PHPのバージョンを7で試してみると HTTP ERROR 500 が発生してしまいます。
|
h_tanaka |
投稿日時: 2017/8/3 14:40
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
Re: 会員パスワード生成ロジックを作成したい php5 で実行したときに問題になっているのは、random_bytes($byte) がうまく実行できていないことです。
echo random_bytes($byte); としても画面上に何も表示されません。 try catch しても例外は発生していませんでした。
|
nyorai |
投稿日時: 2017/8/3 14:44
対応状況: −−−
|
仙人 登録日: 2015/8/21 居住地: 投稿: 302 |
Re: 会員パスワード生成ロジックを作成したい どんなエラーが発生しているかわかりますか?
あと、ec-cubeとは関係のない箇所に配置して、このスクリプトを単独で動かしている感じでしょうか? |
h_tanaka |
投稿日時: 2017/8/3 14:50
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
Re: 会員パスワード生成ロジックを作成したい いいえ、どんなエラーが発生しているかはわかりません。
はい、EC-CUBEと別のディレクトリにプログラムを配置して動かしています。
|
nyorai |
投稿日時: 2017/8/3 15:33
対応状況: −−−
|
仙人 登録日: 2015/8/21 居住地: 投稿: 302 |
Re: 会員パスワード生成ロジックを作成したい ありがとうございます。
php5は、paragonie/random_compatをインストールしてrequireしないと動かないです。 https://github.com/paragonie/random_compat/releases から、Version 2.0.10のSource Code(Zip)をダウンロードして展開する。
で一度試してもらえませんか。 |
h_tanaka |
投稿日時: 2017/8/3 15:58
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
Re: 会員パスワード生成ロジックを作成したい nyorai さん
ありがとうございます! ご提示のとおりに paragonie/random_compat をrequireしたらうまく動きました! ただ、暗号化が正しく行われているかを確認するために、既存の会員情報レコードの salt を $salt に代入して実行したところ、DBに保存されている password とは異なるパスワードが生成されてしまいました。 なにかロジックが間違っているのでしょうか...?
|
nyorai |
投稿日時: 2017/8/4 11:02
対応状況: −−−
|
仙人 登録日: 2015/8/21 居住地: 投稿: 302 |
Re: 会員パスワード生成ロジックを作成したい 手元の環境では同じものが生成できているようにみえます。
以下の手順で試しました。 - EC-CUBE環境で、パスワードは「password」で会員登録を行う - 登録した会員情報のsalt値を使ってこのスクリプトを実行 AUTH_MAGICが間違ってたり、パスワードを入力間違いしてたりなどはありませんか? |
h_tanaka |
投稿日時: 2017/8/4 19:04
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1646 |
Re: 会員パスワード生成ロジックを作成したい 他のデータベースと照らしてみたら合ってました!
最初に参照したデータはパスワードか何か間違ってたのだと思います。 nyorai さん ありがとうございました!
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |