CakePHP 2 系の延命と移行

CakePHP 2 系は、2021 年 6 月に公式のサポートが終了しました。
弊社の鶴島がプロジェクトオーナーを務める pieceofcake2 で、今のアプリケーションを PHP 8 系に移すことも、新しいフレームワークへ移行することもできます。
すべての作業を、セキュリティを意識して進めます。

CakePHP 2 系を使い続けることの問題

公式のサポートが終わった CakePHP 2 系を使い続けると、動かす環境と安全性の両面で、次のような問題が起きます。

新しい PHP で動かない

公式の CakePHP 2 系は PHP 8 系に対応していません。サポートの終わった PHP を使い続けることになります。

脆弱性が修正されない

フレームワークにも PHP にも、見つかった脆弱性の修正が提供されません。

サーバーを移せない

サーバーや OS の更新で古い PHP が使えなくなると、アプリケーションを動かせる環境がなくなります。

取引先のセキュリティチェックで指摘される

サポートの終わったフレームワークの使用は、取引先のセキュリティチェックや監査で、指摘の対象になります。

CakePHP 2 系の移行

CakePHP 2 系は公式のサポートが終了しており、PHP 8 系には対応していません。CakePHP 2 系で作られたシステムは、次の 2 つの方法で PHP 8 系へ移行できます。事前の調査で、システムの規模と今後の改修の予定に合わせてご提案します。

pieceofcake2 で、CakePHP 2 系のまま移行する

弊社の鶴島がプロジェクトオーナーを務める pieceofcake2 に置き換え、アプリケーションのコードの変更を抑えて PHP 8 系へ移行できます。今の機能を保ったまま、保守運用を続けたいシステムに向いています。

CakePHP 5 系など、新しいフレームワークへ移行する

新しいバージョンのフレームワークへ移行できます。改修の規模は大きくなりますが、機能の追加や大きな改修を今後も続けるシステムに向いています。

pieceofcake2

pieceofcake2 は、CakePHP 2 系を PHP 8.0 以降で動かすための、コミュニティによる派生 (フォーク) です。弊社の鶴島がプロジェクトオーナーを務め、OSS として GitHub で公開しています。新しいアプリケーションの開発ではなく、CakePHP 2 系で作られた既存のアプリケーションの保守運用を目的にしています。

  • CakePHP 2 系で作られたアプリケーションを、PHP 8 系の環境で動かせます。
  • pieceofcake2 への置き換えと、アプリケーション側で必要な修正をお引き受けできます。
  • 置き換えたあとの保守運用にも対応できます。

CakePHP 2 系のためのツール

pieceofcake2 では、フレームワーク本体のほかに、移行と品質の確認に利用するツールも公開しています。

移行

Upgrade プラグイン

CakePHP 1.3 から 2 系への移行で必要な機械的な変更の多くを、Rector を使って自動化します。

静的解析

phpstan-cakephp2

CakePHP 2 系の書き方 (プロパティとして読み込むモデルやコンポーネントなど) を PHPStan が理解できるようにする拡張です。

コードの書き方

phpcs-cakephp2

CakePHP 2 系のアプリケーションとプラグインのための、PHP_CodeSniffer の規約です。

End-to-End テスト

panther

アプリケーションを動かし、Chrome で画面を操作するテストを書けます。

セキュリティの検査

security-check・sca・sast・dast

使っているパッケージの脆弱性、コードの危険な書き方、動いているアプリケーションの不備を検査し、報告書を出力します。security-check で、3 つの検査をまとめて実行できます。

セキュリティヘッダー

security-headers

すべての応答に、セキュリティヘッダーを付けるプラグインです。

フォームの保護

captcha

Cloudflare Turnstile、Google reCAPTCHA v2・v3、hCaptcha で、フォームを機械的な送信から守ります。

アップロードの検証

image

アップロードされた画像を、拡張子ではなく中身で検証します。JPEG、PNG、GIF、WebP と、許可した SVG に対応します。

サーバーレス

bref

CakePHP 2 系のアプリケーションを、AWS Lambda で動かせます。

AWS との連携

async-aws

DynamoDB のセッション、S3、SES を、CakePHP 2 系から使えます。

画面の部品の確認

storybook

画面の部品 (Element) を Storybook で表示し、見た目と動きを確認できます。

CI

ci-summary

JUnit、checkstyle、PHPStan の結果を、GitHub Actions のジョブの概要に短くまとめます。

報告書の例security-sca・sast・dast で出力した報告書のサンプル

ソフトウェア構成分析報告書のサンプル。結果、リスク別の脆弱性、脆弱性の詳細、検査したパッケージのページ
ソフトウェア構成分析 (SCA) 報告書
静的アプリケーションセキュリティテスト報告書のサンプル。結果、リスク別の指摘、指摘の詳細のページ
静的アプリケーションセキュリティテスト (SAST) 報告書
動的アプリケーションセキュリティテスト報告書のサンプル。結果、リスク別のアラート、アラートの詳細と対策のページ
動的アプリケーションセキュリティテスト (DAST) 報告書
  • 報告書は、検査用のサンプルのアプリケーションを検査した例です。検査の対象と基準は、お客様のシステムに合わせて決めます。

ご相談・お問い合わせ

内容が固まっていない段階からご相談いただけます。各分野のプロフェッショナルがご対応いたします。ご相談・お見積もりは無料です。