# EmDash – 플러그인 보안 문제를 해결한 WordPress의 정신적 후속작

> Clean Markdown view of GeekNews topic #28111. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=28111](https://news.hada.io/topic?id=28111)
- GeekNews Markdown: [https://news.hada.io/topic/28111.md](https://news.hada.io/topic/28111.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-04-02T11:33:32+09:00
- Updated: 2026-04-02T11:33:32+09:00
- Original source: [blog.cloudflare.com](https://blog.cloudflare.com/emdash-wordpress/)
- Points: 8
- Comments: 6

## Summary

Cloudflare가 만든 **WordPress의 정신적 후속작**입니다. WordPress 보안 문제의 96%가 플러그인에서 나온다는 점에 착안해, 각 플러그인을 **격리된 샌드박스에서 실행**하는 구조를 택했습니다. TypeScript 기반에 Cloudflare Workers 위에서 돌아가는 서버리스 CMS인데요. **x402 결제 표준**을 내장해 콘텐츠별 과금도 가능하고, AI 에이전트 관리나 Passkey 인증 같은 현대적 기능도 포함되어 있습니다. WordPress에 쌓인 불만이 있는 분들, 특히 저도 워드프레스를 버리고 스태틱으로 옮긴 이유가 이 플러그인 보안 문제였는데요. 지금 Cloudflare Pages 로 옮겨뒀는데, 살짝 관심이 가네요.

## Topic Body

- **Cloudflare**가 개발한 **EmDash**는 WordPress의 구조적 한계를 극복하기 위해 **TypeScript와 서버리스 아키텍처**로 새롭게 설계된 **오픈소스 CMS**  
- 각 **플러그인을 격리된 샌드박스 환경**에서 실행해, WordPress 사이트 보안 문제의 96%를 차지하던 **플러그인 취약점**을 근본적으로 차단함  
- **x402 결제 표준**을 내장해 콘텐츠 단위별 **온디맨드 결제(pay-per-use)** 를 지원하며, AI 기반 웹 트래픽 시대에 맞는 수익화 구조를 제공함  
- **Cloudflare Workers 기반 서버리스 구조**로 요청 시 자동 확장·축소되어 **비용 절감과 고성능 처리**를 동시에 달성함  
- **AI 에이전트 관리, Passkey 인증, Astro 테마 구조** 등 현대적 기능을 통합해, WordPress의 정신을 계승하면서도 완전히 새롭게 재구성된 CMS임  
  
---  
  
### EmDash 개요  
- **[EmDash](https://github.com/emdash-cms/emdash)** 는 WordPress의 구조적 한계를 해결하기 위해 새롭게 설계된 **오픈소스 CMS**로, 완전한 **TypeScript 기반**과 **서버리스 아키텍처**를 채택  
  - WordPress의 핵심 기능과 호환되지만 기존 코드를 사용하지 않아 **MIT 라이선스**로 배포 가능  
  - **Cloudflare Workers**의 **Dynamic Worker**를 이용해 각 플러그인을 독립된 **격리 환경(isolate)** 에서 실행  
  - **Astro 프레임워크**를 기반으로 콘텐츠 중심 웹사이트에 최적화된 성능 제공  
- EmDash는 **GitHub**에서 공개되어 있으며, **Cloudflare 계정**이나 **Node.js 서버**에서 직접 배포 가능  
- **플러그인 보안**, **시장 종속성 해소**, **AI 기반 관리**, **x402 결제 지원** 등 WordPress가 해결하지 못한 문제를 근본적으로 개선  
  
### WordPress의 성취와 한계  
- WordPress는 인터넷의 40% 이상을 구동하며 **출판의 민주화**를 이끈 대표적 오픈소스 성공 사례  
- 그러나 24년이 지난 현재, **호스팅 환경과 개발 패러다임**이 크게 변화  
  - 초기에는 VPS 임대가 필요했지만, 현재는 전 세계 분산 네트워크에 **JavaScript 번들 업로드만으로 배포 가능**  
- EmDash는 WordPress의 정신을 계승하면서도 **현대적 웹 인프라와 보안 요구**에 맞게 재구성된 형태  
  
### WordPress 플러그인 보안 문제 해결  
- WordPress 사이트의 **96% 보안 문제**가 플러그인에서 발생  
  - 플러그인은 PHP 스크립트로 데이터베이스와 파일 시스템에 직접 접근  
  - 설치 시 거의 모든 권한을 부여받으며 격리나 권한 제한이 없음  
- EmDash는 각 플러그인을 **Dynamic Worker 기반 샌드박스 환경**에서 실행  
  - 플러그인은 **명시적 선언(manifest)** 을 통해 필요한 **capabilities**만 요청  
  - 예: `read:content`, `email:send` 등 필요한 권한만 부여  
  - 네트워크 접근도 명시된 호스트에 한정  
- 설치 전 플러그인이 요청하는 권한을 명확히 확인할 수 있어 **OAuth와 유사한 투명한 권한 부여 구조** 제공  
- 관리자는 권한 요청 기준으로 **설치 정책 자동화** 가능  
  
### 플러그인 보안과 마켓플레이스 종속성 해소  
- WordPress.org는 플러그인 보안 문제로 인해 **수동 검수 절차**를 운영하며 대기열이 800개 이상  
  - GPL 라이선스 제약으로 **코드 재사용과 상업화가 제한**  
- EmDash는 두 가지 구조적 개선을 통해 **시장 종속(lock-in)** 을 제거  
  1. **플러그인 라이선스 자유화**: EmDash와 코드 공유가 없으므로 개발자가 원하는 라이선스 선택 가능  
  2. **보안 샌드박스 실행**: 사이트가 플러그인 코드를 직접 볼 필요 없이 신뢰 가능  
- 플러그인은 명시된 capability만 수행하므로 **보안 위험을 세밀하게 평가** 가능  
- 이러한 구조는 **중앙화된 마켓플레이스 의존도 감소**로 이어짐  
  - 신뢰 가능한 보안 모델이 확보되면 개발자와 사용자는 **자유로운 생태계 확장** 가능  
  
### x402 결제 표준 내장 — 콘텐츠 접근 유료화  
- EmDash는 **x402 표준**을 기본 지원하여 **HTTP 402 Payment Required** 응답을 통한 **온디맨드 결제** 가능  
  - 사용자는 구독 없이 **콘텐츠 단위별 결제(pay-per-use)** 가능  
  - 사이트 운영자는 **지갑 주소와 가격 설정만으로 수익화** 가능  
- 이는 **AI 에이전트 기반 웹 트래픽 시대**에 맞춘 새로운 비즈니스 모델 제공  
- 모든 EmDash 사이트는 **AI 시대에 적합한 내장 수익 구조**를 가짐  
  
### 서버리스 기반 확장성과 비용 절감  
- WordPress는 서버 프로비저닝이 필요해 **유휴 리소스 비용**이 발생  
- EmDash는 **Cloudflare workerd** 기반의 **v8 isolate 아키텍처**를 활용  
  - 요청 시 즉시 인스턴스 생성, 요청이 없으면 **자동 scale-to-zero**  
  - **CPU 사용 시간만 과금**  
- Cloudflare for Platforms를 통해 **수백만 개 인스턴스 자동 확장** 가능  
- 저비용·고성능 구조로 **대규모 트래픽 처리와 무료 티어 제공**에 유리  
  
### Astro 기반의 현대적 테마 구조  
- EmDash 테마는 **Astro 프로젝트**로 구성되며 다음 요소 포함  
  - **Pages**: 콘텐츠 렌더링용 라우트  
  - **Layouts**: 공통 HTML 구조  
  - **Components**: 재사용 가능한 UI 요소  
  - **Styles**: CSS 또는 Tailwind 설정  
  - **Seed 파일**: CMS가 생성할 콘텐츠 타입 정의  
- Astro는 **LLM 학습 데이터에 포함된 인기 프레임워크**로 개발자 친화적  
- WordPress 테마의 `functions.php` 기반 구조와 달리 EmDash 테마는 **데이터베이스 접근 불가**로 보안 강화  
  
### AI 네이티브 CMS — MCP, CLI, Agent Skills  
- EmDash는 **AI 에이전트가 직접 관리 가능한 CMS**로 설계  
  - 반복적인 콘텐츠 마이그레이션이나 필드 변환 작업 자동화  
- ## Agent Skills  
  - EmDash 인스턴스는 **Agent Skills**를 내장해 플러그인 구조·훅·테마 포팅 방법 등을 AI에게 제공  
  - AI가 EmDash 코드베이스를 이해하고 **자동 커스터마이징** 가능  
- ## EmDash CLI  
  - CLI를 통해 **콘텐츠 검색, 미디어 업로드, 스키마 생성** 등 관리 기능 수행  
  - 로컬 및 원격 인스턴스 모두 제어 가능  
- ## 내장 MCP 서버  
  - 각 인스턴스는 자체 **Model Context Protocol 서버**를 제공  
  - 관리자 UI에서 가능한 모든 작업을 원격으로 수행 가능  
  
### 패스키 기반 인증과 역할 관리  
- EmDash는 **Passkey 인증**을 기본값으로 사용  
  - 비밀번호 유출 및 무차별 대입 공격 방지  
- 기본적으로 **역할 기반 접근 제어(RBAC)** 지원  
  - 관리자, 편집자, 작성자, 기여자 등 역할별 권한 구분  
- 인증은 **플러그인 방식으로 확장 가능**, SSO 및 IdP 메타데이터 연동 지원  
  
### WordPress 사이트 마이그레이션  
- 기존 WordPress 사이트는 **WXR 파일 내보내기** 또는 **EmDash Exporter 플러그인**을 통해 이전 가능  
  - Exporter 플러그인은 **WordPress Application Password**로 보호된 전용 엔드포인트 생성  
  - 콘텐츠와 미디어를 자동으로 EmDash 라이브러리로 이전  
- EmDash는 **스키마 기반 콘텐츠 구조**를 지원  
  - WordPress의 Custom Post Type을 EmDash의 **독립 컬렉션**으로 변환  
- **Block Kit Agent Skill**을 통해 맞춤형 블록을 AI로 생성 가능  
  
### 체험 및 참여  
- EmDash는 현재 **v0.1.0 프리뷰 버전**으로 [**GitHub 저장소**에서 다운로드 가능](https://github.com/emdash-cms/emdash/)  
- **[EmDash Playground](https://emdashcms.com/)** 에서 관리자 UI를 직접 체험 가능  
- 로컬 설치 명령: `npm create emdash@latest`  
- Cloudflare 대시보드에서도 배포 가능  
- WordPress 커뮤니티, 호스팅 플랫폼, 플러그인·테마 개발자들의 **피드백과 기여** 환영

## Comments



### Comment 54518

- Author: xguru
- Created: 2026-04-03T09:19:12+09:00
- Points: 2

제가 개인블로그에 워드프레스 사용하다가 저 보안 문제때문에 버리고 스태틱으로 옮긴 사람인데요.  
개인 블로그를 한동안 그냥 내비두고 있었는데, 진짜 이상한 스팸들이 파고 들어와서 블로그를 스팸밭으로 만들어 버리고 갔어요. 태그를 이용해서 내 로컬에 없는 페이지를 구글에 등록하는 이상한 방법을 쓰더군요. 지우느라 아직도 고생중입니다 ㅠ

### Comment 54600

- Author: lunamoth
- Created: 2026-04-03T22:24:55+09:00
- Points: 1
- Parent comment: 54518
- Depth: 1

저도 웹마스터 툴에 이상한 URL 잡혀서 의아했던 기억나는데   
  
"태그를 이용해서 내 로컬에 없는 페이지를 구글에 등록하는 이상한 방법" 이게 어떤 방식인건가요??  
  
이걸 차단하는 방법이 있나요?

### Comment 54752

- Author: nemorize
- Created: 2026-04-06T14:43:52+09:00
- Points: 1
- Parent comment: 54600
- Depth: 2

스팸성 문구를 검색한 검색 결과 URL을 타 블로그의 게시글에 백링크로 등록하는 식의 스팸도 있어요;  
어떤 것들이든 결국 수동으로 지워야죠...

### Comment 54605

- Author: xguru
- Created: 2026-04-04T00:32:26+09:00
- Points: 1
- Parent comment: 54600
- Depth: 2

보통은 파일 업로드 관련 취약점이 있는 플러그인/테마 등을 이용해서 침투하는 방식이고요.  
이렇게 들어오면 원래 블로그 주인 모르게, tag/category 등에 내용을 심습니다.   
실제로는 블로그 페이지에는 전혀 보이지 않아서 모르는데, 이 URL이 구글 봇에게만 보이도록 렌더링 하는 방식을 씁니다. ( [BabaYaga](https://www.wordfence.com/wp-content/uploads/2018/06/Wordfence-BabaYaga-WhitePaper.pdf) 같은게 그렇습니다. )   
  
이렇게 한번 침투가 되면 실제로는 해당 주소로 인입되는 거를 다 410 Gone 으로 가게 만드는거 말고는 방법이 없더라고요. 서버에서는 필요 없는 주소에 대해서는 다 410으로 표시 되게 해두고, 특정 인입 형식을 서치콘솔에서 수동으로 6개월간 지워달라고 해야합니다. 예를 들어 /tag 로 시작하는걸 다 지우거나 해야해요.   
  
저는 한달째 지움 신청하는데 아직도 다 안지워졌어요. 구글 인덱싱이 제대로 동작해야 하는데 오래 걸리네요.

### Comment 54690

- Author: lunamoth
- Created: 2026-04-05T17:03:26+09:00
- Points: 1
- Parent comment: 54605
- Depth: 3

아 그렇군요. 알려주셔서 감사합니다. 여러모로 신경써야겠네요

### Comment 54425

- Author: neo
- Created: 2026-04-02T11:33:32+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=47602832) 
- 10년 넘게 **WordPress**를 다뤄왔는데, 이번 프로젝트는 **TypeScript**와 **Worker 플러그인** 두 가지를 완벽히 잡았다고 생각함  
  최근 WP의 보안 문제를 많이 고민했는데, 악성 플러그인이 DB나 환경 변수에 접근하거나 XSS를 유발할 수 있음. 하지만 잘 설계된 플러그인 시스템이라면 이를 완화할 수 있음  
  개인적으로 [HotsauceCMS](https://github.com/hotsauce-team/hotsauce)를 개발 중임. NodeJS나 Deno Worker 플러그인을 선택적으로 사용해, 퍼스트파티 플러그인은 빠른 인프로세스 실행을, 서드파티는 워커로 격리 실행 가능하게 함  
  의존성은 4개뿐이고 전이 의존성은 0개로, **Dependabot 경고**와 **npm 공급망 공격**에 지쳤기 때문임  
  Drizzle 기반의 스키마 퍼스트 구조로, DB 구조를 완전히 제어할 수 있고 파일 업로드 같은 기능을 스키마 힌트로 정의함  
  DB 비종속적이라 Postgres, MySQL, SQLite 등 Drizzle이 지원하는 모든 DB에서 작동함  
  프론트엔드는 자유롭게 선택 가능하며, 개인적으로는 React 없는 JSX를 선호함  
  피드백 환영함. 내가 뭔가 놓친 게 있는지, 방향이 맞는지 궁금함. EmDash의 향후 전개도 기대 중임
  - 왜 **TypeScript**가 그렇게 중요하다고 생각하는지 설명해줄 수 있는지 궁금함
  - 예전에 WordPress를 많이 썼는데, 당시엔 FTP로 바로 올려서 동작하는 **간편한 설치성**이 매력이었음. CLI나 빌드 도구가 필요 없었음. 하지만 보안은 늘 문제였고, 해킹이 끊이지 않았음
  - 관련된 [이전 논의 링크](https://news.ycombinator.com/item?id=47503348)를 공유함

- EmDash가 WordPress의 정신적 후속작이라는데, 나는 CMS가 가야 할 방향이 그 반대라고 생각함  
  오히려 단순화해서 **정적 파일 기반 웹사이트**로 돌아가야 함. 캐싱도 쉽고 빠르며 관리도 간단함  
  물론 Cloudflare 입장에서는 자체 **Workers 제품**을 팔기 위해 이런 구조를 택한 것 같음. 근본적인 보안 문제를 정말 해결했는지는 아직 의문임
  - 나도 정적 사이트를 좋아하지만, 고객들은 종종 **동적 콘텐츠**를 원함. 처음엔 단순한 사이트를 원한다고 하지만, 나중엔 폼, 재고, 예약 기능을 추가하길 원함. 그래서 플러그인 중심 구조가 이해됨
  - 비개발자 고객들은 UI로 직접 수정할 수 있는 걸 좋아함. WordPress는 너무 **복잡하고 비대한 UI**라서 대부분 결국 개발자에게 다시 맡김. 최소한의 UI로 필요한 부분만 수정 가능하게 하는 게 이상적임
  - Astro를 쓴다면 기본적으로 정적 사이트 생성기임. 필요할 때 React 컴포넌트를 추가할 수 있고, 플러그인도 선택적으로 사용할 수 있음
  - 정적 파일을 캐시하기 쉬운 곳에 호스팅하고 싶다면 **Cloudflare**가 이미 그런 서비스를 제공함
  - Astro는 정적 HTML을 출력하므로, 그 점에서 문제는 없어 보임

- Cloudflare가 잘못된 방향에서 접근하고 있다고 생각함  
  WordPress가 성공한 이유는 **쉬운 설치성과 네트워크 효과** 덕분임. 보안보다도, 이미 WP에 익숙한 개발자들이 많기 때문임  
  EmDash가 성공하려면 Wix나 Squarespace보다 **더 쉽고 빠르고 유연**해야 함. 그렇지 않으면 네트워크 효과를 만들기 어려움  
  - WordPress에는 이미 숙련된 인력이 많고, EmDash는 이제 시작임. 그래도 성장한다면 응원할 생각임

- WordPress 개발자로서 가장 큰 고통은 **플러그인 아키텍처**였음.  
  WP는 플러그인을 이미지와 같은 `wp-content` 폴더에 넣어 CI/CD가 악몽이 됨. EmDash는 플러그인이 TS 모듈이라 훨씬 깔끔함  
  - WP에는 **staging 개념**이 없어, 변경 사항을 프로덕션으로 옮기려면 수동으로 다시 해야 함

- Cloudflare의 **x402 결제 표준** 개념이 흥미로움  
  에이전트가 자동으로 소액 결제를 보내 콘텐츠 접근권을 얻는 구조인데, 약간 무섭지만 미래지향적임  
  농담 삼아, 방문마다 10센트 요구하는 **HTTP 402 허니팟**을 만들면 옛날 “1픽셀 1달러” 아이디어의 재림일지도 모름
  - 만약 에이전트를 속여 계속 결제하게 만들면, 무한 리디렉션이나 쓰레기 콘텐츠로 돈을 벌 수도 있음
  - [HTTP 402 문서](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/...) 참고
  - 영화 *Office Space*의 **소액 착복 해킹**이 합법화된 느낌임

- WordPress의 가치는 코드가 아니라 **생태계와 지원 체계**에 있음  
  코드 품질은 별로지만, 모든 SaaS가 WP 커넥터를 제공함.  
  EmDash가 성공하려면 비개발자도 Fiverr에서 쉽게 커스터마이징을 맡길 수 있어야 함. 그건 기술이 아니라 **노동 시장의 문제**임  
  - Cloudflare는 **만우절 장난**을 하지 않음. 1.1.1.1도 4월 1일에 출시됐고 지금은 주요 DNS 서비스임  
  - 실제 프로젝트임을 확인함  
  - WordPress의 “오픈소스” 관련 **.com vs .org 논란**도 참고할 만함  
  - 오래된 대안으로 [Textpattern](https://textpattern.com/)도 있음

- Cloudflare가 만든 WordPress 후속작이라는 점은 매력적이지만, **Dynamic Workers** 기반 플러그인 격리는 Cloudflare 런타임에서만 작동함  
  다른 호스트에서는 단순한 TS CMS일 뿐이라 **아키텍처 종속성**이 문제임  
  - 결국 Cloudflare 인프라에 종속된 OSS라는 점에서 채택이 어려움  
  - 다만 **Workerd**는 오픈소스라 자체 호스팅도 가능함  
  - 다른 런타임이 이 기능을 복제할 수도 있음  
  - Cloudflare는 인기 OSS를 **자사 인프라 전용 대체품**으로 만드는 전략을 취하는 듯함

- 왜 여전히 **JavaScript**로 AI 프로젝트를 만드는지 의문임  
  이제는 Go 같은 **컴파일 언어**로도 빠르게 앱을 만들 수 있음. 더 작고 빠르며 배포도 간단함  
  JS는 해석형이라 느리고 복잡함. 과거엔 즉시 실행이 장점이었지만 지금은 컴파일도 빠름  
  - “JS가 진짜 언어가 아니”라는 말은 과함. 해석형 언어를 쓸 이유는 여전히 많음  
  - JS는 유일하게 **웹 프론트엔드와 백엔드, 모바일, 데스크톱**을 모두 아우를 수 있음. tRPC 같은 도구로 **엔드투엔드 타입 안정성**도 확보 가능함  
  - 대부분의 개발자가 JS/TS에 익숙하고 커뮤니티가 가장 큼. 생태계가 거대하니 굳이 바꿀 이유가 없음  
  - Go는 **JSON 처리나 템플릿 작업**에서 불편함. 타입 시스템이 덜 유연해서 프론트엔드 개발에는 제약이 많음  
  - LLM이 TS를 잘 쓰고, TS는 JS의 단점을 많이 고쳤음. 빠른 런타임과 쉬운 배포 덕분에 여전히 매력적임

- EmDash가 WordPress 코드를 사용하지 않아 **MIT 라이선스**로 배포된다는 점이 흥미로움  
  하지만 최근 등장한 **Cleanroom as a Service**인 [Malus](https://malus.sh/)를 떠올리게 함. 타이밍이 묘하게 겹침  
  - Malus는 사실 **풍자 프로젝트**임
