ハッシュ関数の選択とハッシュ化処理

CakePHPでは、ログイン時にはpasswordを自動的にハッシュ化して認証を行ってくれますが、そのパスワードを登録する際は、明示的にハッシュ化する必要があります。

ハッシュ関数の選択

ハッシュ関数はデフォルトではSHA-1が使用されます。変更する場合は、Security::setHash($hash)を使用して(AppController.php内で)定義することができます。
ソース:/lib/Cake/Utility/Security.php

// /app/Controller/AppController.php
public function beforeFilter(){
    Security::setHash( 'sha256');
}

各ハッシュ関数でハッシュ化した際の長さになります。(length固定なのでvarcharよりcharを指定したほうが処理コストが少なくなるでしょう。)
以下がCakePHPで用意されているハッシュ方式ですが、その他PHPで使える関数をそのまま設定すればよさそうです。(要確認)

タイムリーにこのような記事がありました。デフォルトのsha1からは変更しておいたほうがいいかもしれません。
“日本の標準暗号”が10年ぶり大改定、国産暗号削減よりもRC4とSHA-1の監理ポスト入りが影響大

一方、より問題が大きい暗号方式もある。「運用監視暗号リスト」に回された暗号方式だ。このリストは「推奨すべき状態ではなくなった暗号技術のうち、互換性維持のために継続利用を容認するもののリスト」。いわば監理ポストという位置付けだ。ストリーム暗号の128-bit RC4とハッシュ関数の「SHA-1」などが、このリストに回されている。

ハッシュ化

テキストのハッシュ化はSecurity::hash($string, $type = NULL, $salt = false)を使用して下さい。
ソース:/lib/Cake/Utility/Security.php

$password = Security::hash( $plain, 'sha512', true);
// $password = $this->Auth->password( $plain);
  • $string - ハッシュ化対象のテキスト
  • $type - 使用するハッシュ関数
  • $salt - trueに設定した場合、(/Config/Core.php)Security.saltに$stringを付与してハッシュ化を行います。

また、$this->Auth->passwordでも同様のことが行えます。この場合は、上のsetHashで設定したハッシュ関数を使用して($salt=trueで)、ハッシュ化されます。(Security::hashを呼び出しているだけ)
ソース:/lib/Cake/Controller/Component/AuthComponent.php

public static function password( $password) {
    return Security::hash( $password, null, true);
}
  • このエントリーをはてなブックマークに追加

関連記事

SQLクエリーをログに出力する

SQLのクエリーをデバッグするには、Debug Kitを使用すればできますが、デバッグログと一緒に出したいのでやり方を調査してみました。 別々のログやビューでみるのもいいですが、秒単位で実行される処

ログローテーション

CakePHP 2.xではbootstrap.php内にあらかじめアプリケーションログの設定が書かれています。2.xで日付ごとにログファイルが切り替わるよう設定してみました。 日ごとにログを切り替え

CakeEmailでメール送信(@gmail)

CakePHP 2になって追加されたクラスCakeEmailがシンプルに使えます。これを使用してメール送信を行う処理を実装してみました。 CakeEmailクラスの読み込み /app/Config

パス定数と変更方法やURLの取得

CakePHPは基本的にはディレクトリそのまま配置することで構築が可能ではありますが、設定パスを変更することでセキュリティに考慮した構成にすることや運用性をもたせたものにすることが可能になります。

checkボックスを実装

selectボックスに引き続いてcheckボックスの実装方法をおさらいしてみます。 コードは、CakePHP 2と1.3両方で実装可能です。デモ モデルは、こちらも以下 CREATE TA

selectボックスを実装

今まで、selectボックスのgroupを作成するのにSet::Combineを使用していましたが、意外と簡単にできることに気付いてしまったので、ご紹介。(自分だけ知らなかったことに気付いた と言った

バリデーションエラーメッセージの取得

CakePHP 2.xになってバリデーションエラー時に返却されるメッセージのデータ形式が変更になったようです。1.3系では、ひとつのフィールドに対して返却されるメッセージは一つのルールのみですが、2.

バリデーション前後に処理を追加できる「beforeValidate」「afterValidate」

CakePHPでは、「beforeValidate」「afterValidate」というバリデーション処理の前後で追加の処理を実装できるコールバック関数が用意されています。 beforeVali

複数ファイルアップロードフォーム

CakePHP 2.0からはHTML5が標準でサポートとなり、複数ファイルアップロードのためのフォーム記述が容易になりました。 View (ビュー) 配列 Array (

Formヘルパーのinputタグのdiv/labelなどの設定

Formヘルパーのinputではデフォルトでは以下のようにdivで囲われて、labelが付与されて出力されます。 CSSのフレームワークなどであらかじめ決まったスタイルがある場合に便利に作られていま

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

PAGE TOP ↑