CloudflareがAstroベースのオープンソースCMS「EmDash」を公開した

https://dev.classmethod.jp/articles/tried-emdash-astro-based-oss-cms-by-cloudflare/

https://blog.cloudflare.com/emdash-wordpress/

リポジトリ: https://github.com/generalaction/emdash

EmDashは、Cloudflareが「WordPressの精神的後継」と位置づけるフルスタックのサーバーレスCMS

テーマやフロントエンドはAstroそのまま、管理画面はWordPressそっくり、インフラはCloudflare Workers + D1 + R2というサーバーレス構成。プラグインはV8 isolateで隔離実行されるので、WordPressで問題になりがちなプラグイン経由のセキュリティリスクが構造的に排除されています。認証もデフォルトでPasskeyベースです

EmDashは、AstroプロジェクトにWordPress的な管理画面とCMSレイヤーをラップした製品、という理解が一番しっくりきます

V8 isolateによるプラグイン隔離とは?

  • WordPressの問題: プラグインはPHPとして本体と同じプロセス・同じ権限で動く。つまりプラグインのコードがDB・ファイルシステム・他プラグインすべてに直接アクセスできてしまう。悪意あるプラグインや脆弱なプラグインが1つあるだけでサイト全体が危険にさらされる
  • EmDashのアプローチ: 各プラグインをV8 isolate(Cloudflare Workersの実行単位)で動かす。isolateは専用のサンドボックスで、他のプラグインやシステム本体のメモリ・データに直接触れない。プラグインには必要最小限のAPIだけが公開される
  • イメージ: WordPressは「全員が同じ部屋で作業している(誰でも何でも触れる)」、EmDashは「各プラグインが個室に隔離されていて、窓口経由でしかやり取りできない」
  • 具体例 — プラグインが「最新の記事一覧を取得したい」場合
    • WordPress: プラグインがSQL(SELECT * FROM wp_posts ...)を直接実行できる。ついでに wp_users テーブルも読めるし、DROP TABLE すら可能
    • EmDash: プラグインはDBに直接触れず、CMS本体が提供するAPI(例: getPosts({ limit: 10 }))を呼ぶ。本体がバリデーション・権限チェックした上でD1に問い合わせ、結果だけをプラグインに返す。プラグインからはユーザーテーブルを覗いたりテーブルを消したりすることは不可能