コネヒト開発者ブログ

コネヒト開発者ブログ

CakePHP3.5.8にアップデートしました

こんにちは!みなさま、そろそろ2017年のNo.1コミック作品を決め始める時期でしょうか?
個人的には、女子攻兵ロスが一時期ありましたので いちげきの第2巻は嬉しかったですね!

いちげき 2 (SPコミックス)

いちげき 2 (SPコミックス)

さて、アドベントカレンダー真っ最中ですが、CakePHPの更新をしたので投稿致します。 cakephp

今回は、3.5.7へのアップデートを見送っていた関係で、3.5.8になりました。

CakePHP3.5.7アップデート超訳

links

contents

  • テストコード中のアサーションのイディオムを「better」な書き方に #11422
    • すごいPR(diffが・・・
    • 内容は「例外検査をどうするか」というものでして、「アノテーションでやるより、ケースの中でメソッドを呼ぶほうが良さそう」というプラクティスを反映したもの
  • phpstanに従う修正 #11451
  • Digest Authenticationにおけるhash アルゴリズムの利用の修正#11453
  • (Databaseの)Typeの再設定をする際に、内部キャッシュ残存してうまく動かない問題の修正#11457
  • MariaDBでtmestampの初期値の扱いに問題があったのを修正 #11473
  • Routingで、配列による _methodの複数指定に対応#11474
    • これ今までなかったのでしたっけ・・・
  • FormHelper::button()で、confirm属性の注入に対応#11483
  • Responseクラスで、 bodyに文字列が入ってきたときに誤ってinvokeされる脆弱性の修正#11502
    • Response::body('phpinfo') のような 「callable」な値を入れると、、 phpinfo()の実行結果が取り出されてしまう・・・みたいなことですね
    • 当該のメソッドはdeprecatedではありますが><
  • ServerRequest::referer() で、意図していないサイトへの誘導が可能になっていた脆弱性の修正#11503

commments

今回は、「PHP7においてエラー処理に問題があることが発覚した」という情報があったので、コネヒトでは採用を見送りました。
この情報を拾えたのはSlackのCakePHP#Japanese チャンネルで動きを眺めいてのことだったので、とても助かりました。
source: Slack

また、同時期に「実は今まで、RequestHandlerCompoentとBakeプラグインの利用に、情報漏えいリスクに関わる問題が潜在していたのでは」という話題も上がってきていました。
詳細な内容がCakePHP Advent Calendar day-7に上がってきているので、CakePHP3をご利用の方はぜひ一度ご確認ください。

PHPUnitの例外の検査については、個人的には、アサーションメソッド expectExceptionvs@expectedExceptionみたいな話は、どこかで聞いたことはあったけど・・くらいの感覚でスルーしていました。(Cakeに入りてはCakeに従えばいいのかな、という面もあります。)
表面的に考えると「アノテーションでやるほうが簡潔」なんですよね。discussion にてPHPUnitの作者の記事が引用されているのですが、大変興味深かったです。ぜひ御覧ください。
特にA New Best Practice: expectException()のセクションは注目です。時代背景を踏まえた「今ならこの方が利便性が高い」という内容は、なるほど!と・・・
また、But going forward I will recommend using expectException() etc. for testing exceptions.とまで言っているので、結構温度感高めな感じがありますね

CakePHP3.5.8アップデート超訳

links

contents

  • emailのエンコーディング周りの修正 #11488
  • Response::isOk() にて、従来の200-202に加え203,204も許容(true)するように #11521
    • 余談ですが、弊社内では @itosho がコレを喜んでました
  • PHP7でのエラーのハンドリングの問題を修正#11518
    • このあたりは、もともとCakePHP3が持っているThrowableの扱いに関する問題(と言って差し支えないと思います)が絡んでいますね・・*1

comments

bakeryに挙げられている変更箇所は3点で、普段のアップデートに比べたらボリュームは少ないです。またこの期間中に注意喚起を行うためのポストもなされています。 bakery.cakephp.org

こういった様子を見ていて、「最近とてもbugfix/securityな雰囲気が色濃いなぁ」と感じていたところでした。

周辺のことを

本体の更新も去ることながら、個人的にCakePHP関連の大きな変更は bake pluginでtwigが標準採用されたということでした。 現状ではbakeのテンプレートをカスタムはしていないですが、適用箇所によっては利便性がとても高いと思うので、機を見て投入してみたいな!と思っているところです。 github.com

また、cakephp-codesniffer も 3.0.1 ... 3.0.2 に更新されています。
フレームワーク本体とがっちり合わせることで、こうしてstandardsも自然とレベルが引き上げられていくのは恩恵だな!と思っています。

所感

今回は、随分とSlackからの情報に助けられたと思っています。やはり日常的にキャッチアップをしていること・耳を傾けておくことが大事ですね・・と痛感しているところです。
3.5.7における脆弱性の修正は、chinpeiさんご本人から報告があがってきています。*2
もし複雑な内容で理解が追いつかなかったらその場で聞けそうというのも利点ですし、安心感を覚えました。

Advent Calendarの影響もあって?か、先月末くらいから #japaneseチャンネルもワイワイしている印象があります。Cakeユーザーがもっと増えるといいですね〜

それでは、また!

私の周りでも風邪やインフルエンザが流行ってきました、怖いですね気をつけよう・・・

qiita.com

明日(15日目)のコネヒト Advent Calendar 2017はコネヒトが誇るAndroidエンジニア @tommykw のターンです!お楽しみに!

*1:個人的に、 こちらの話の行方を見守っています・・

*2:https://cakesf.slack.com/archives/C1FT02VQA/p1512535795000014 にてご報告が上がっていました