整理日期:2026-07-24
給 Ibe 的 agent 閱讀確認用,彙整自多輪 Wake / Ibe / codex / cc 討論
| Worker | 用途 | 信任層級 |
|---|---|---|
ecpay-worker.js | 綠界金流:建立訂單、/notify 通知、發兌換券、打賞小費、服務 CRUD | 金流層 |
ibe-publish-worker.js | 一鍵發佈文章,寫入 GitHub repo | 部署層(高權限) |
oracle-worker(v28) | 塔羅占卜 AI 對話邏輯 | 免費公開層 |
dionysus-oracle-worker.js | 酒神神諭卡(免費體驗),已有 IP 限流 | 免費公開層 |
ibe-agent-worker.js | 兌換券驗證/核銷、VIP 對話服務 | 付費層 |
social-preview-worker.js | LINE/FB 分享預覽卡片改寫(未部署) | 低風險(唯讀) |
IBE-TESTtest=1 參數ADMIN_SECRET,一處外流全部失守。/admin/services(GET)密碼放在 URL 參數,容易外流於 log/瀏覽器紀錄。*.workers.dev,可能繞過 Cloudflare Access。原則:同一信任層級才合併,不同層級不共用 Secret/不合併 Worker
| 層級 | 涵蓋範圍 | 建議做法 |
|---|---|---|
| 免費公開層 | oracle-worker + dionysus-oracle-worker | 可合併,風險層級一致 |
| 付費層 | ibe-agent-worker | 保持獨立,避免牽連票券與付費權限 |
| 金流層 | ecpay-worker | 保持獨立,最高敏感度 |
| 部署/管理層 | ibe-publish-worker | 建議改用 GitHub Actions 取代 |
| 低風險/唯讀 | social-preview-worker | 評估用 Pages Functions 取代 |
為何抽換 ibe-publish-worker:
現況用一組長效 GitHub PAT 常駐 Worker 直接寫檔案,爆炸半徑最大。
改用 GitHub Actions 後,Worker 只觸發 workflow_dispatch,實際寫入由 Actions 內建短效 GITHUB_TOKEN 處理,且有完整 log。
觸發入口仍須 Cloudflare Access 保護。
核心概念:token exchange — 先證明資格,換一張短效通行證,之後請求都用這張證。 就算演算法被看光,沒有有效 token 也打不進來;就算 token 外流,損害範圍只在效期內。
Cloudflare Turnstile:進頁先過人機驗證,前端拿 token 呼叫 API,Worker 驗證有效性。搭配既有 IP 限流。
票券密碼驗證通過 → Worker 簽發短效 token(30-60 分鐘)→ 後續對話帶 token,過期用同組密碼重新換發。
/notify 沿用 CheckMacValue 簽章(現有作法正確,已含冪等處理)。管理端點改用 Cloudflare Access 核發 JWT。
觸發入口掛 Cloudflare Access,實際寫入交給 GitHub Actions 短效 Token。
CORS 只擋瀏覽器,不擋 curl/腳本直接呼叫。依投報率排序:
*.workers.dev — 關掉不設防後門入口IBE-TEST 萬用密碼test=1 免驗證測試模式ADMIN_SECRET,改獨立最小權限憑證workers.dev,管理型 Worker 加 Accessibe-publish-worker 評估改用 GitHub Actions資安沒有「一次修完就結束」的狀態,只有「當下風險降到可接受」。此文件列出的是目前已知的問題與強化方向, 完成後代表「沒有已知的高風險漏洞」,不代表未來新增功能或第三方平台出現新漏洞時可以不用再檢查。 建議之後每次改動 Worker 邏輯或新增端點時,順手比對本文件的分層原則與驗證模式。