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

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);
}
  • このエントリーをはてなブックマークに追加

関連記事

CakePHP インストール時エラーの対処

CakePHPインストール時に出くわすであろうエラーの原因と対処方法についてまとめてみました。前提として、WebサーバはApache、データベースはMySQLとしています。 Timezone未設

FormヘルパーのMagicOption (マジックオプション) 

Formヘルパーでは、「フィールド名」,「テーブルカラムのデータ型」もしくはモデルの「バリデーション設定」によりフォーム要素を決定したり、自動で属性を付与する「マジックオプション」と呼ばれるものがある

no image

radioボタンを実装

Radioボタンの実装は、セレクトボックスとほぼ同じです。 個人的にはラジオボタンをすすんで使用することは少ないのですが、2択くらいの選択肢であれば非常に便利ですよね。 今回は、その実装方法 デモ

多言語サイト向けに翻訳ファイルを使って翻訳を行う

CakePHPには、翻訳をビヘイビアを使用する方法と翻訳ファイルを使用する方法の2つがあるそうです。(他にもあるのかな?) 今回は、翻訳ファイルを使用して言語の切り替えを行い、その言語設定をCook

Markdown Plugin

「Markdown CakePHP Plugin」は、MarkDown書式をレンダリングしてくれるビューヘルパーです。MarkDownについて勉強しているうちに出会ったので試し打ちです。 ダウンロー

FullCalendarを使用してカレンダーアプリケーション

カレンダーアプリケーションを作成するため、カレンダー表示できるプラグインを探索して出会ったFullcalendarを試してみました。シンプルに使用できる上に、オプションがかなり豊富です。ダウンロード

テーブルからランダムにデータを取り出す(find)

CakePHPでテーブルから特定件数のレコードをランダムに取得するには以下のように指定するとできます。 $this->data = $this->Bulkdata->find( 'all',

CSS/JSをひとまとめにして軽量化するプラグイン「Minify plugin for CakePHP」

「Minify plugin for CakePHP」は、インクルードするCSSもしくはJSファイルをひとまとめにしてキャッシュ化してくれるプラグインです。 導入 ダウンロード・解凍し

Blowfishを使用してハッシュ化する

使用方法 Blowfishを採用してハッシュ化を行う場合、Securityクラスのhashメソッドを呼び出します。第2引数に'blowfish'を指定し、第3引数を指定しないもしくはfalseにしま

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

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

Message

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

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

PAGE TOP ↑