Home > PHP

PHP Archive

CakePHP 複数コア のお手軽バージョン管理 : CakePHP Advent Calendar 2011 Day 15

  • 2011-12-15 (木)
  • PHP

CakePHP Advent Calendar 2011 15日目のエントリです。
※ 12/16追記 : こっそり、解説文を書き足しました
※ 12/18追記 : さらに改訂(汗)。

※ 前日( 14日目 )のエントリーは @kaz_29 さんの 『 CakePHP2+PostgreSQLでGeoデータを簡単に扱う!? 』です。

新しいバージョン・リリースのたびに発生するバージョンアップ作業ですが、ソースコードの取得と配置といった定形作業をスクリプト化する方法( 簡単コース )と、はじめからCakePHPコアのバージョン管理を git で行う方法( Gitコース )を考えてみました。
※ インストール方法はCakePHP Cookbook の 応用インストール手順 をベースにしています

簡単コースのスクリプトは github のリポジトリから CakePHP のソースコードを取得し、ディレクトリ単位でバージョン管理するので git を知らなくても大丈夫です。一度設定すれば、スクリプトを実行するだけの簡単バージョンアップ!

Gitコースのバージョンアップは git pull コマンドが使えます。
※ こちらは git を普段から使っているプログラマー向け

続きを読む

  • コメント (Close): 0
  • トラックバック (Close): 0

DateTimeクラスの落とし穴と対策 : PHP Advent Calendar jp 2011 Day 7

  • 2011-12-07 (水)
  • PHP

PHP Advent Calendar jp 2011 7日目担当の @scriptwork です。

DateTimeクラス は PHP5.3 で日付や時刻の加減算を行う add / subメソッド や 差分を計算する diffメソッド などが追加され、日付と時刻を取り扱う面倒な処理をサポートしてくれるクラスです。

DateTimeクラス が実装されるまでは PHP関数 の strtotime() と date() で日付と時刻の加減算を行なっていましたが、2038年問題 への対応もあり、新しくコードを書くなら DateTimeクラス を使うのが良さそうですね。

とはいえ、現在の PHP5.3.8 と PHP5.4.0RC2 の DateTimeクラス は 日付の加減算 で strtotime() と 同じ問題 をかかえていますので、使い所を押さえておく必要があります。

DateTimeクラスの問題とは何か?

まずは正常なケースとして、日付に対する日数の加減算で DateTimeクラス の動作を確認してみましょう。

続きを読む

  • コメント (Close): 0
  • トラックバック (Close): 0

CakePHP Authコンポーネントでパスワード・ハッシュをストレッチングするには?

  • 2011-05-27 (金)
  • PHP

体系的に学ぶ 安全なWebアプリケーションの作り方 』で解説されていたパスワード・ハッシュのストレッチングをCakePHPで実装してみました。 
ストレッチング処理の肝となる部分は書籍に書いてある内容のままですので(汗)、設定方法を簡単に説明します。

【 注意事項 】
今回実装したStretchAuthコンポーネントの導入にはパスワード( ハッシュ )の再登録が必要です。
また、運用中のシステムへの導入や導入後の設定変更により、ハッシュ方式やストレッチ回数が異なるパスワードがDBへ登録されますので、必ずDB及びシステムのバックアップを行ってからお試しください。

体系的に学ぶ 安全なWebアプリケーションの作り方

※ 諸般の事情により、CakePHP-1.2.10 でしか動作確認していませんので 1.3 や 2.0 で動いた方は @scriptwork まで教えて頂けると助かります

それではまず bootstrap.php でパラメーターを設定。

define( 'HASH_TYPE',     'sha256' ); // 使用するハッシュ関数の種類
define( 'STRETCH_COUNT', 1000 );     // ハッシュのストレッチング回数

HASH_TYPE は 使用するハッシュ関数のアルゴリズムでPHPのhash関数へのパラメーターになります。
sha1 / sha256 / sha512 など、お使いのサーバー環境に合わせて指定してください。
※ CakePHP 1.3.9 と 2.0-alpha はデフォルトが sha1 になっていますが、できれば sha256 か sha512 がお薦め

HASH_TYPEの指定によって、生成されるハッシュ値の長さが変わります。
このため、mysql側もパスワードハッシュを格納するフィールドサイズの調整が必要。
※ 実際にPHP 5.3.6で生成されたハッシュの長さを見るとsha256で64バイト、sha512なら128バイトでした

STRETCH_COUNT でパスワード文字列に対するハッシュ関数の適用回数を指定。
ここはサーバー性能とアクセス負荷のバランスによって調整が必要なところですが、とりあえず1000回で様子見中…

続きを読む

  • コメント (Close): 0
  • トラックバック (Close): 0

ホーム > PHP

Fedora 20
アーカイブ

Return to page top