▼ 2008/02/09(土) AuthComponentのパスワード暗号化。登録注意点。CakePHP1.2b
CakePHP1.2bのAuthコンポーネントは、なるほど便利なのだけれど、一番最初に自分のパスワードをデータベースに設定するところでつまずいたので覚書。
まず結論。
Authコンポーネント準備段階ではコンポーネントを読み込むと何かと設定が必要になってしまうので、まずは、以下で、管理者用パスワードを算出して、自力でデータベースのテーブルに登録する。
passwordの算出の仕方*1。
AuthComponentは、インストール時に設定した*2Security.saltの値、すなわち
このsalt*3を暗号化した上で、入力されたパスワードを文字列で連結し、それをSHA1でさらにハッシュ化している。
なので、開発時や一番最初にスーパーユーザーを登録する時には、パスワードを上記の式で求めて、手動で設定しておかなければならない。
また、AuthConponent自体には、ユーザー登録の機能はないので(たぶん)、自分で実装するしかないが、その際には上記算出を使わず、Authコンポーネントのメンバ関数を使ったほうが、今後のためにはよいと思われる。(もちろん、最初のユーザーを手動登録する際も、一番最初の式を使わなくても、AuthComponentを読み込んでおいて、以下の式で求めればよい)
もちろん、運用後にSecurity.saltを変更してしまうと、全員のパスワード再登録、という恐ろしい事態が待っているので、必ずインストール時に適切なSecurity.saltを設定しておくことが必要。
ちなみに私のSecurity.saltは自分の好きな詞をハッシュ化したものを使っています。
CakePHP version 1.2.0.6311 beta
まず結論。
Authコンポーネント準備段階ではコンポーネントを読み込むと何かと設定が必要になってしまうので、まずは、以下で、管理者用パスワードを算出して、自力でデータベースのテーブルに登録する。
App::import('Component', 'Auth');
echo AuthComponent::password( 'パスワード' );
上記の結論に至った理由など
passwordの算出の仕方*1。
DB格納値 = sha1( sha1( 'Security.saltの値') . ' パスワード ' );
AuthComponentは、インストール時に設定した*2Security.saltの値、すなわち
- /cake/app/configure/core.phpの
Configure::write( ' Security.salt ', ' てきとうな値 ');を使って、暗号化のキーとしている。
このsalt*3を暗号化した上で、入力されたパスワードを文字列で連結し、それをSHA1でさらにハッシュ化している。
なので、開発時や一番最初にスーパーユーザーを登録する時には、パスワードを上記の式で求めて、手動で設定しておかなければならない。
また、AuthConponent自体には、ユーザー登録の機能はないので(たぶん)、自分で実装するしかないが、その際には上記算出を使わず、Authコンポーネントのメンバ関数を使ったほうが、今後のためにはよいと思われる。(もちろん、最初のユーザーを手動登録する際も、一番最初の式を使わなくても、AuthComponentを読み込んでおいて、以下の式で求めればよい)
DB格納値 = $this->Auth->password( ' パスワードテキスト ' );(var $useComponents=array( 'Auth' ) は必要かな。)
もちろん、運用後にSecurity.saltを変更してしまうと、全員のパスワード再登録、という恐ろしい事態が待っているので、必ずインストール時に適切なSecurity.saltを設定しておくことが必要。
ちなみに私のSecurity.saltは自分の好きな詞をハッシュ化したものを使っています。
CakePHP version 1.2.0.6311 beta
▼ コメント(0件)
- TB-URL http://www.cpa-lab.com/tech/064/tb/
-
▼
AuthComponentの使い方
CPA-LABテクニカル 基本的な使い方:CakePHP1.2 AuthComponentで会員登録サイトを作る [1]Authコンポーネントとは会員制サイトや管理人用として、認証を利用したいときに使用する特徴パスワードはハッシュにて不可逆暗号化される。CakePHPの暗号化ハッシ...
-
▼
[CakePHP]AuthComponentのパスワード暗号化を無効にする方法
Writing Some Code1.2系で追加されたAuthComponentは、認証関連の処理を一手に担ってくれる強力なコンポーネントですが、 AuthComponentのパスワード暗号化。登録注意点。CakePHP1.2b - CPA-LABテクニカル 【CakePHP】AuthC...