baserCMSの開発中に、ローカル環境のbaserCMSにある日突然、管理画面にログインできなくなりました。
(どうも /app/config/install.php を本番環境のに上書きしてしまったらしい…)
Twitterで困った困ったとつぶやいてるとbaserサポーターのナイスガイ達から対処方法を教えてもらったのでメモしておきます。
@garyuten ターミナルから、 php -r ‘echo sha1(“saltpw”).”\n”;’ saltpw = install.phpのSecurity.saltの値とパスワードを結合した文字列、出力された値をDBに突っ込めばOKのはず
— 清末直さん (@itm_kiyo) 2013年1月23日
環境のメモ
- Mac OS 10.8
- MySQL 5.5.25 ※PostegreSQLでも大丈夫らしいです(コメント参照
- baserCMS 2.0.5系
パスワードの再設定手順
1. /app/config/install.php を開いて ‘Security.salt’の値(暗号化された文字列)をコピー
2. Terminalで以下のコマンドを実行
コピーした文字列+希望パスワード(下の例では”passpass”)で暗号化します。
$ php -r 'echo sha1("*******************************************passpass")."\n";'
9252196b25865f6870e2fb1d0153efe0af1e70e1 //←出力結果
3. 出力結果をコピーしてphpMyAdminなどで該当ユーザーのpasswordとしてDBに保存

table[‘bc_users’]内の “name”[admin]の”password”の文字列を上書きすればOK。
これで希望のパスワードでログインできるようになったはずです。
ちなみにWordpressではmysqlのMD5という方法で暗号化してるので、phpMyAdmin上のみでパスワード復旧できるようです。
参考サイト: WordPressでパスワードを忘れた時のログイン方法 – ユーザー名やPWがわからなくなった | WP SEOブログ
cakePHPの手法なのか、外部のセキュリティコード?とパスワードで暗号化生成してるので、
その分復旧の手間がかかりますが、こちらの方がセキュリティがいいですよね。
※追記 2015/10/08 上記方法でもログインできない場合への対処方法
・/app/tmp の中身を全て削除
・ブラウザのクッキー、キャッシュを削除
これで再度ログインを試すと無事ログイン成功。
おそらく /app/tmp/sessions のセッションが原因だと思います。

コメント
コメント一覧 (2件)
baserCMS(というかCakephp)は、暗号の種類はいくつかあって強度の高くて使えるものから利用しているって感じの実装です。なので、最悪はmd5になります。
今回Macだろうとおもったので、sha1でtweetしたのですが、最悪ログインできない場合は、他の暗号形式をためしてみる必要があります。
あと、MySQLだけでなくPostgreSQLでも環境は問題ないです。両方とも暗号化された文字列を保存しているだけなので。(僕の検証はPostgreSQL9.1でおこなってます)
てな感じでフォロー。
>itm_kiyo さん
フォローコメント、あざっす!!
md5は最悪なケースなんですね…
MySQLもPostegSQLもでも問題ないんですね、勉強になりました!