CakePHP 2.6.6 と 3.0.6 がリリースされました

CakePHPコアチームはCakePHP 2.6.6と3.0.6が入手可能になったことをお知らせいたします。これらは重要なセキュリティフィックスを含むメンテナンスリリースです。

セキュリティフィックス

今週のはじめに、巧妙に作成されたリクエストからサービス不能に陥る攻撃を作成できてしまうというRequestHandlerComponent の脆弱性についてお知らせしました。RequestHandlerComponent は Xml::build() を使ってローカルファイルの読み込みを許してしまいます。
RequestHandlerComponent を使用するすべてのアプリケーションでアップグレードを行なうか、XMLペイロードの構文解析を使用しないことをおすすめします。XMLペイロードの構文解析の使用を停止するには、以下のように行います。

// コントローラのbeforeFilterで
$this->RequestHandler->addInputType('xml', function() { return []; });

上記のコードにより、組込まれているXMLパーサを何も処理しないファンクションに置き換えることができます。セキュリティ問題の報告(日本語)から知らせてくれた Takeshi Terada さんに感謝します。
訳注:原文はこちら

2.6.6のその他の修正

  • FormHelper::radio() は、マルチバイトの値を使ったラジオボランでID属性を正しく生成するようになった
  • Inflector::humanize() と Inflector::underscore() はUTF8の文字列を正しく扱うようになった

3.0.6のその他の修正

  • FormHelper::radio() は、マルチバイトの値を使ったラジオボランでID属性を正しく生成するようになった
  • Inflector::humanize() と Inflector::underscore() はUTF8の文字列を正しく扱うようになった
  • FormHelper::postLink() のURLを二重エンコードする問題を修正
  • PaginatorHelper::numbers() で、urlオプションをサポート
  • 例外のログで、Error.trace が優先されるようになった
  • 3.0.3で導入されたエンティティアクセサは削除された。問題を多く引き起こし、パフォーマンスを素晴らしく改善するようなものではなかったため。
  • EntityTrait::getOriginal() と EntityTrait::extractOriginal() は以前はnullを返していたが値を返すように修正
  • 関連のクエリビルダで、カラのクエリを使用すると無効なSQLが生成される問題を修正

バグレポートやプルリクエストによりこのリリースに関わってくださったコミュニティの皆さんすべてに感謝しています。

githubよりパッケージリリースのダウンロード

CakePHP 2.6.5 がリリースされました

CakePHP コアチームは CakePHP 2.6.5 が入手可能になったことをお知らせいたします。これは2.6系のメンテナンスリリースになります。

2.6.5 の変更点の概要は以下のとおりです。

  • input()でフォームフィールド「年」が作成された場合、期待通り動作するようになった
  • HTTPステータスコード429のサポートの追加
  • JsonView で、ビュー変数 _jsonOptions がサポートされ、json_encode() で使用されるシリアライズオプションを設定できるようになった
  • XmlView で、ビュー変数 _xmlOptions がサポートされ、XML生成時に使用されるシリアライズオプションを設定できるようになった
  • web runnerのコードカバレッジで、アプリケーションファイルでないファイルでも動作するようになった
  • SchemaShell は、pやhで終了するファイル名を壊さないようになった
  • Inflectorで、イレギュラーな複合語の名詞が正しく活用できるようになった。これまでは最初と2番目の単語の間の文字が転置されてしまっていた
  • 省略可能なすべてのHTML5属性がHtmlHelperに追加された
  • サブクエリやバーチャルフィールドのテーブルエイリアスの識別子の引用符が修正された

このリリースに関わってくださった皆さんに感謝します。バグチケット、ドキュメントの編集、パッチやプルリクエストはCakePHPを大いに活かし、支えるものです。
githubよりパッケージリリースのダウンロード

CakePHP 3.0.5 がリリースされました

CakePHP コアチームは CakePHP 3.0.5 が入手可能になったことをお知らせいたします。これは3.0系のメンテナンスリリースになります。

バグフィックス

以下のような変更を行いました。すべての一覧はこちらから、各コミットを参照してください

  • Filesystem ライブラリは composer 経由で独立したパッケージとして利用できるようになった
  • QueryLogger は 10 以上のプレースホルダーがある場合にパラメータを正しく書き換えられるようになった
  • 日時入力で、秒入力の要素を正しくレンダリングするようになった。これまでは00を含めていなかった
  • belongsToMany _joinData のマーシャリングの改善。新規もしくは既存のエンティティが混ざっていても正しくマーシャリングできるようになった
  • InstanceConfigTrait はネストしたデータを正しく削除できるようになった
  • SQLite のフィクスチャは主キーのカラムをすべてのシチュエーションで正しく生成できるようになった
  • エンティティのプロパティ・キャッシュが控え目に動作するようになった。ミューテータキャッシュはどのプロパティが変更されても無効にされるようになった
  • マーシャリング時にbelongsToManyのレコードが存在する場合、関連の条件は使用されなくなった
  • i18n シェルで、異なる文脈のメッセージを別のエントリーとして po ファイルに作成するようになった
  • HttpClient のファイルアップロードで、@構文は非推奨になった。代わりにリソースハンドルを使用できる。@構文はユーザの提供データでは安全ではなく、CakePHPの将来のバージョンで削除される予定
  • SQLServer で、BLOBフィールドはリソースハンドルに変換される前に16進デコードされるようになった
  • FormHelper は 日時ピッカーで 「default => true」と指定されない限りデフォルトに現在の日時をセットしなくなった。これにより、null可のdatetime型のフィールドの取扱が簡単になった
  • QueryExpressions で、サブクエリを含む場合に正しく丸括弧で括るようになった

改善点

3.0のパッチリリースとして、より小さい自動処理に耐えられるS3を用意することにしました。新機能は継続的に公開していきます。3.0.5では以下の仕様が追加されました。

  • Validator::addNested() と Validator::addNestedMany() の追加。これらのメソッドにより、ネストした配列のプロパティを生成するようになった
  • Collection::unwrap() の追加
  • Folder::copy() は非再帰モードをサポートするようになった
  • Collection::zip() と Collection::zipWith() の追加
  • Form と Validator オブジェクトに __debugInfo() メソッドが実装された。これにより DebugKit と debug() の出力が改善された

CakeFest 2015 Tickets

CakeFest 2015はあと11日後にニューヨークで始まります。
チケットをまだお求めでないなら、まだ間に合います。

github.よりパッケージリリースのダウンロード