- EmDash do Cloudflare phát triển là một CMS mã nguồn mở được thiết kế lại bằng TypeScript và kiến trúc serverless để vượt qua các giới hạn mang tính cấu trúc của WordPress
- Chạy từng plugin trong môi trường sandbox cô lập, từ đó chặn tận gốc các lỗ hổng plugin vốn chiếm 96% vấn đề bảo mật của các website WordPress
- Tích hợp sẵn tiêu chuẩn thanh toán x402 để hỗ trợ thanh toán theo nhu cầu (pay-per-use) cho từng đơn vị nội dung, cung cấp mô hình kiếm tiền phù hợp với kỷ nguyên lưu lượng web do AI dẫn dắt
- Với kiến trúc serverless dựa trên Cloudflare Workers, hệ thống tự động mở rộng/thu hẹp theo request, đồng thời đạt được giảm chi phí và hiệu năng cao
- Tích hợp các tính năng hiện đại như quản lý AI agent, xác thực Passkey, cấu trúc theme Astro, biến đây thành một CMS kế thừa tinh thần của WordPress nhưng được tái cấu trúc hoàn toàn mới
Tổng quan về EmDash
- EmDash là một CMS mã nguồn mở được thiết kế mới để giải quyết các giới hạn cấu trúc của WordPress, áp dụng hoàn toàn nền tảng TypeScript và kiến trúc serverless
- Tương thích với các chức năng cốt lõi của WordPress nhưng không sử dụng mã nguồn hiện có, nên có thể được phân phối theo giấy phép MIT
- Sử dụng Dynamic Worker của Cloudflare Workers để chạy từng plugin trong một môi trường cô lập (isolate) độc lập
- Dựa trên framework Astro để mang lại hiệu năng tối ưu cho các website lấy nội dung làm trung tâm
- EmDash được công khai trên GitHub và có thể triển khai trực tiếp trên tài khoản Cloudflare hoặc máy chủ Node.js
- Cải thiện tận gốc những vấn đề WordPress chưa giải quyết được như bảo mật plugin, gỡ bỏ sự phụ thuộc thị trường, quản lý bằng AI, hỗ trợ thanh toán x402
Thành tựu và giới hạn của WordPress
- WordPress đang vận hành hơn 40% Internet và là một ví dụ thành công tiêu biểu của mã nguồn mở thúc đẩy dân chủ hóa xuất bản
- Tuy nhiên sau 24 năm, môi trường hosting và mô hình phát triển đã thay đổi rất nhiều
- Trước đây cần thuê VPS, còn hiện nay có thể triển khai chỉ bằng cách tải lên JavaScript bundle lên mạng phân tán toàn cầu
- EmDash kế thừa tinh thần của WordPress nhưng được tái cấu trúc để phù hợp với hạ tầng web hiện đại và các yêu cầu bảo mật
Giải quyết vấn đề bảo mật plugin của WordPress
- 96% vấn đề bảo mật của website WordPress phát sinh từ plugin
- Plugin là các script PHP truy cập trực tiếp vào cơ sở dữ liệu và hệ thống tệp
- Khi cài đặt, chúng gần như được trao mọi quyền mà không có cơ chế cô lập hay giới hạn quyền hạn
- EmDash chạy từng plugin trong môi trường sandbox dựa trên Dynamic Worker
- Plugin chỉ yêu cầu các capabilities cần thiết thông qua khai báo tường minh (manifest)
- Ví dụ:
read:content, email:send và chỉ các quyền cần thiết mới được cấp
- Quyền truy cập mạng cũng bị giới hạn ở các host đã được chỉ định
- Trước khi cài đặt có thể kiểm tra rõ các quyền mà plugin yêu cầu, cung cấp cấu trúc cấp quyền minh bạch tương tự OAuth
- Quản trị viên cũng có thể tự động hóa chính sách cài đặt dựa trên yêu cầu quyền hạn
Bảo mật plugin và gỡ bỏ sự phụ thuộc vào marketplace
- Do vấn đề bảo mật plugin, WordPress.org đang vận hành quy trình kiểm duyệt thủ công, với hàng đợi hơn 800 mục
- Các ràng buộc của giấy phép GPL khiến việc tái sử dụng mã và thương mại hóa bị hạn chế
- EmDash loại bỏ lock-in thị trường thông qua hai cải tiến cấu trúc
- Tự do hóa giấy phép plugin: Vì không chia sẻ mã với EmDash nên nhà phát triển có thể chọn giấy phép mình muốn
- Thực thi sandbox bảo mật: Website có thể tin cậy plugin mà không cần trực tiếp xem mã plugin
- Vì plugin chỉ thực hiện các capability đã khai báo nên có thể đánh giá rủi ro bảo mật một cách chi tiết
- Cấu trúc này dẫn tới giảm phụ thuộc vào marketplace tập trung
- Khi đã có mô hình bảo mật đáng tin cậy, nhà phát triển và người dùng có thể mở rộng hệ sinh thái một cách tự do
Tích hợp tiêu chuẩn thanh toán x402 — thu phí truy cập nội dung
- EmDash hỗ trợ mặc định tiêu chuẩn x402, cho phép thanh toán theo nhu cầu thông qua phản hồi HTTP 402 Payment Required
- Người dùng có thể trả tiền theo từng nội dung (pay-per-use) mà không cần đăng ký thuê bao
- Nhà vận hành website có thể kiếm tiền chỉ bằng cách thiết lập địa chỉ ví và mức giá
- Đây là mô hình kinh doanh mới phù hợp với kỷ nguyên lưu lượng web dựa trên AI agent
- Mọi website EmDash đều có cấu trúc doanh thu tích hợp sẵn phù hợp với thời đại AI
Khả năng mở rộng serverless và giảm chi phí
- WordPress cần provisioning máy chủ nên phát sinh chi phí tài nguyên nhàn rỗi
- EmDash tận dụng kiến trúc v8 isolate dựa trên Cloudflare workerd
- Tạo instance ngay khi có request, và tự động scale-to-zero khi không có request
- Chỉ tính phí theo thời gian sử dụng CPU
- Thông qua Cloudflare for Platforms, có thể tự động mở rộng tới hàng triệu instance
- Cấu trúc chi phí thấp, hiệu năng cao này thuận lợi cho xử lý lưu lượng lớn và cung cấp free tier
Cấu trúc theme hiện đại dựa trên Astro
- Theme EmDash được tổ chức như một project Astro và bao gồm các thành phần sau
- Pages: route để render nội dung
- Layouts: cấu trúc HTML dùng chung
- Components: thành phần UI có thể tái sử dụng
- Styles: cấu hình CSS hoặc Tailwind
- Tệp seed: định nghĩa các kiểu nội dung mà CMS sẽ tạo ra
- Astro là một framework phổ biến có trong dữ liệu huấn luyện của LLM, nên thân thiện với nhà phát triển
- Khác với cấu trúc dựa trên
functions.php của theme WordPress, theme EmDash không thể truy cập cơ sở dữ liệu, nhờ đó tăng cường bảo mật
CMS gốc AI — MCP, CLI, Agent Skills
- EmDash được thiết kế là CMS có thể được quản lý trực tiếp bởi AI agent
- Tự động hóa các tác vụ lặp lại như migration nội dung hay chuyển đổi field
-
Agent Skills
- Instance EmDash tích hợp Agent Skills, cung cấp cho AI thông tin về cấu trúc plugin, hook, phương pháp port theme...
- AI có thể hiểu codebase EmDash và tự động tùy biến
-
EmDash CLI
- Thông qua CLI có thể thực hiện các chức năng quản trị như tìm kiếm nội dung, upload media, tạo schema
- Có thể điều khiển cả instance cục bộ lẫn từ xa
-
Máy chủ MCP tích hợp
- Mỗi instance cung cấp máy chủ Model Context Protocol riêng
- Có thể thực hiện từ xa mọi thao tác có thể làm trong UI quản trị
Xác thực bằng passkey và quản lý vai trò
- EmDash dùng xác thực Passkey làm mặc định
- Ngăn rò rỉ mật khẩu và tấn công brute-force
- Mặc định hỗ trợ kiểm soát truy cập dựa trên vai trò (RBAC)
- Phân quyền theo vai trò như quản trị viên, biên tập viên, tác giả, cộng tác viên
- Xác thực có thể mở rộng theo kiểu plugin, hỗ trợ tích hợp SSO và metadata IdP
Di chuyển website WordPress
- Website WordPress hiện có có thể được chuyển sang thông qua xuất tệp WXR hoặc plugin EmDash Exporter
- Plugin Exporter tạo một endpoint chuyên dụng được bảo vệ bằng WordPress Application Password
- Tự động chuyển nội dung và media vào thư viện EmDash
- EmDash hỗ trợ cấu trúc nội dung dựa trên schema
- Chuyển Custom Post Type của WordPress thành collection độc lập của EmDash
- Có thể tạo block tùy chỉnh bằng AI thông qua Block Kit Agent Skill
Trải nghiệm và tham gia
- EmDash hiện đang ở phiên bản preview v0.1.0 và có thể tải xuống từ kho GitHub
- Có thể trực tiếp trải nghiệm UI quản trị tại EmDash Playground
- Lệnh cài đặt cục bộ:
npm create emdash@latest
- Cũng có thể triển khai từ bảng điều khiển Cloudflare
- Hoan nghênh phản hồi và đóng góp từ cộng đồng WordPress, nền tảng hosting, nhà phát triển plugin và theme
5 bình luận
Tôi cũng nhớ là từng thấy các URL lạ bị bắt trong công cụ quản trị trang web nên đã thấy khó hiểu.
"Cách kỳ lạ dùng thẻ để đăng ký lên Google những trang không tồn tại trên máy cục bộ của tôi" là theo cơ chế như thế nào vậy??
Có cách nào chặn việc này không?
Cũng có kiểu spam đăng ký backlink vào bài viết trên blog khác bằng URL kết quả tìm kiếm có chứa các cụm từ mang tính spam;
Dù là kiểu nào thì cuối cùng cũng phải tự xóa thủ công thôi...
Thông thường, cách xâm nhập là lợi dụng các plugin/theme có lỗ hổng liên quan đến tải tệp lên.
Khi đã vào được theo cách này, họ sẽ cài nội dung vào tag/category v.v. mà chủ blog gốc không hề hay biết.
Thực tế thì trên trang blog hoàn toàn không nhìn thấy gì nên rất khó nhận ra, nhưng chúng dùng cách render để URL này chỉ hiển thị với bot của Google. (ví dụ như BabaYaga).
Một khi đã bị xâm nhập như vậy thì trên thực tế gần như không còn cách nào khác ngoài việc khiến toàn bộ truy cập vào các địa chỉ đó trả về
410 Gone. Trên máy chủ, tôi cấu hình để mọi địa chỉ không cần thiết đều trả về 410, rồi trong Search Console phải yêu cầu xóa thủ công các mẫu truy cập cụ thể trong 6 tháng. Ví dụ như phải xóa tất cả những gì bắt đầu bằng/tag.Tôi đã gửi yêu cầu xóa suốt một tháng nay mà vẫn chưa xóa hết. Việc Google indexing cần hoạt động đúng, nhưng quá trình này mất khá lâu.
À, ra là vậy. Cảm ơn bạn đã cho biết. Có vẻ sẽ phải chú ý nhiều mặt đây.
Ý kiến trên Hacker News
Tôi đã làm việc với WordPress hơn 10 năm, và tôi nghĩ dự án này đã giải quyết rất tốt hai điểm là TypeScript và plugin Worker
Gần đây tôi suy nghĩ nhiều về các vấn đề bảo mật của WP; plugin độc hại có thể truy cập DB hoặc biến môi trường, hoặc gây ra XSS. Nhưng một hệ thống plugin được thiết kế tốt có thể giảm thiểu điều đó
Cá nhân tôi đang phát triển HotsauceCMS. Nó cho phép tùy chọn dùng plugin Worker của NodeJS hoặc Deno, để plugin bên thứ nhất chạy nhanh trong tiến trình, còn plugin bên thứ ba có thể được cô lập trong worker
Chỉ có 4 dependency và 0 dependency bắc cầu, vì tôi đã quá mệt mỏi với cảnh báo Dependabot và các cuộc tấn công chuỗi cung ứng npm
Dựa trên cấu trúc schema-first với Drizzle, nên có thể kiểm soát hoàn toàn cấu trúc DB và định nghĩa các tính năng như tải tệp lên bằng gợi ý schema
Không phụ thuộc vào DB cụ thể, nên chạy được trên mọi DB mà Drizzle hỗ trợ như Postgres, MySQL, SQLite
Có thể tự do chọn frontend, và cá nhân tôi thích JSX không có React
Rất mong nhận được phản hồi. Tôi muốn biết liệu mình có bỏ sót gì không và hướng đi có đúng không. Tôi cũng đang mong chờ xem EmDash sẽ phát triển thế nào
Họ nói EmDash là hậu duệ tinh thần của WordPress, nhưng tôi lại nghĩ CMS nên đi theo hướng ngược lại
Thay vào đó nên đơn giản hóa để quay về website dựa trên tệp tĩnh. Dễ cache, nhanh và cũng dễ quản lý hơn
Tất nhiên, từ góc nhìn của Cloudflare thì có vẻ họ chọn cấu trúc này để bán sản phẩm Workers của mình. Tôi vẫn còn nghi ngờ liệu nó đã thật sự giải quyết được vấn đề bảo mật cốt lõi hay chưa
Tôi nghĩ Cloudflare đang tiếp cận từ sai hướng
WordPress thành công nhờ cài đặt dễ dàng và hiệu ứng mạng lưới. Thậm chí còn hơn cả bảo mật, vì đã có rất nhiều lập trình viên quen thuộc với WP
Nếu EmDash muốn thành công thì phải dễ hơn, nhanh hơn và linh hoạt hơn Wix hay Squarespace. Nếu không thì rất khó tạo ra hiệu ứng mạng lưới
Với tư cách là lập trình viên WordPress, nỗi đau lớn nhất của tôi là kiến trúc plugin
WP đặt plugin vào thư mục
wp-contentcùng với ảnh, khiến CI/CD trở thành cơn ác mộng. EmDash thì plugin là các module TS nên gọn gàng hơn nhiềuKhái niệm tiêu chuẩn thanh toán x402 của Cloudflare khá thú vị
Cấu trúc này cho phép agent tự động gửi các khoản thanh toán nhỏ để lấy quyền truy cập nội dung; hơi đáng sợ nhưng cũng mang tính tương lai
Nói đùa thôi, nếu tạo một HTTP 402 honeypot đòi 10 xu cho mỗi lượt truy cập thì có khi lại là sự tái sinh của ý tưởng “1 pixel 1 đô” ngày xưa
Giá trị của WordPress không nằm ở code mà ở hệ sinh thái và mạng lưới hỗ trợ
Chất lượng code thì không cao, nhưng mọi SaaS đều cung cấp connector cho WP.
Để EmDash thành công, ngay cả người không phải lập trình viên cũng phải có thể dễ dàng thuê tùy biến trên Fiverr. Đó không phải vấn đề công nghệ mà là vấn đề của thị trường lao động
Việc đây là hậu duệ của WordPress do Cloudflare tạo ra thì hấp dẫn thật, nhưng cơ chế cô lập plugin dựa trên Dynamic Workers chỉ hoạt động trong runtime của Cloudflare
Trên host khác thì nó chỉ là một CMS viết bằng TS, nên sự phụ thuộc kiến trúc là vấn đề
Tôi thắc mắc vì sao người ta vẫn làm dự án AI bằng JavaScript
Giờ đây ngay cả với ngôn ngữ biên dịch như Go cũng có thể làm app rất nhanh. Nhỏ hơn, nhanh hơn và triển khai cũng đơn giản hơn
JS là ngôn ngữ thông dịch nên chậm và phức tạp. Trước đây ưu điểm là chạy ngay lập tức, nhưng giờ compile cũng đã rất nhanh
Điều thú vị là EmDash không dùng code của WordPress nên được phát hành theo giấy phép MIT
Nhưng nó lại khiến tôi nghĩ đến Malus, một Cleanroom as a Service mới xuất hiện gần đây. Thời điểm trùng hợp khá lạ