▼ 2008/02/09(土) CakePHP1.2のEmailComponentのデフォルトcharsetとEncoding:7bit
CakePHP1.2bのEmailコンポーネントを眺めていると、
デフォルトのcharset=UTF-8、つまり
これっていいのでしょうか?
あまりemailの仕様に詳しくない者がいうのも何ですが、UTF-8の場合は、8bitにするか、base64でエンコードして、base64指定にしなければならないような気がします。誰か詳しい人いませんかね。
しかも、charsetは、設定で変更できるのですが、Content-Transfer-Encodingは、変更できません。
ということは、charsetは、7bit形式のものでなければならず、日本語を通すなら、ISO-2022-JP(JIS)でなければならないはず。
なので、私は、ISO-2022-JPに指定しています。。。。
(呼び出し側で、mb_convert_encodingでJISに変換している。)
で、もひとついえば、本文のエンコードと、ヘッダーのエンコードは、それぞれ別に設定されてもいいように思うのですが、$this->charsetひとつだけの設定なので、ヘッダーと本文のエンコードを別にすることができません。
CakePHP version 1.2.0.6311 betaのお話です。なんか、このコンポーネントはこれからもっと手が入るような気がする。
デフォルトのcharset=UTF-8、つまり
Content-Type: text/html: charset=UTF-8なのに、
Content-Transfer-Encoding:7bitであることに気づいた。
これっていいのでしょうか?
あまりemailの仕様に詳しくない者がいうのも何ですが、UTF-8の場合は、8bitにするか、base64でエンコードして、base64指定にしなければならないような気がします。誰か詳しい人いませんかね。
しかも、charsetは、設定で変更できるのですが、Content-Transfer-Encodingは、変更できません。
ということは、charsetは、7bit形式のものでなければならず、日本語を通すなら、ISO-2022-JP(JIS)でなければならないはず。
なので、私は、ISO-2022-JPに指定しています。。。。
(呼び出し側で、mb_convert_encodingでJISに変換している。)
で、もひとついえば、本文のエンコードと、ヘッダーのエンコードは、それぞれ別に設定されてもいいように思うのですが、$this->charsetひとつだけの設定なので、ヘッダーと本文のエンコードを別にすることができません。
CakePHP version 1.2.0.6311 betaのお話です。なんか、このコンポーネントはこれからもっと手が入るような気がする。
▼ コメント(0件)
- TB-URL http://www.cpa-lab.com/tech/065/tb/
▼ 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
- 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...
▼ 2008/02/09(土) CakePHPの暗号化ハッシュデフォルトは、SAH1
CakePHPには、Security::hash()なる関数があり、CakePHP内部で認証時のパスワードの暗号化時のハッシュ関数を定めている。SHA1,SHA256,MD5が使えるようになっている*1。使い方は、以下の通り。
デフォルトはSHA1なので、初期設定時など、間違ってMD5でパスワード設定などすると認証されないので注意。
$password:暗号化したいテキスト
$typeを設定する場合は、必ず小文字にて。
sha256を指定した場合、PHPにて、mhash関数が使える状態でない場合は、MD5にて暗号化されるので、環境を移行する場合や、開発→運用へと変更する場合に注意をしないと、ローカルで設定したパスワードで認証されない事態が生じるので注意。
CakePHPの内部では、Typeは省略して、Security::hash($password);と呼ばれることが多いようである。
/cake/lib/security.php
デフォルトはSHA1なので、初期設定時など、間違ってMD5でパスワード設定などすると認証されないので注意。
暗号化されたワード = Security::hash( $password , $type );CakePHP version 1.2.0.6311 beta
$password:暗号化したいテキスト
| $type | 暗号化の方法 |
| 省略又はnull,又はsha1 | SHA1 |
| sha256 | SHA256 |
| md5 | MD5 |
sha256を指定した場合、PHPにて、mhash関数が使える状態でない場合は、MD5にて暗号化されるので、環境を移行する場合や、開発→運用へと変更する場合に注意をしないと、ローカルで設定したパスワードで認証されない事態が生じるので注意。
CakePHPの内部では、Typeは省略して、Security::hash($password);と呼ばれることが多いようである。
/cake/lib/security.php
*1 : 別にPHP単独の関数でもいいような気がするが
- TB-URL http://www.cpa-lab.com/tech/063/tb/
-
▼
AuthComponentの使い方
CPA-LABテクニカル 基本的な使い方:CakePHP1.2 AuthComponentで会員登録サイトを作る [1]Authコンポーネントとは会員制サイトや管理人用として、認証を利用したいときに使用する特徴パスワードはハッシュにて不可逆暗号化される。CakePHPの暗号化ハッシ...