docs(wiki): Mira Console 完整版收尾——mistakes #24 三層跳脫驗證法+DELETE 假綠缺口、status 更新 (Arcrun#3 console 系)

This commit is contained in:
uncle6me-web
2026-07-04 17:51:25 +08:00
parent f9e44abc59
commit 9cc29f5dfb
2 changed files with 28 additions and 1 deletions
+20
View File
@@ -512,6 +512,26 @@ array-of-tables`[[x]]`)不用 inline array。改 toml 後用 `wrangler --dr
---
## 24. Worker 內嵌單檔 HTML 的三層跳脫=隱形破版源;驗證要「求值後」做(2026-07-04Mira Console 完整版)
**情境**console 頁是 TS template literal 包整份 HTMLinline JS。字面上要穿三層:
TS template`\\d` 才輸出 `\d`、內層禁裸 backtick`${`)→ inline JSregex、字串拼接)→ HTML。
肉眼/tsc 都看不出內層 JS 是否被跳脫層弄壞——tsc 只驗 TS 合法,內嵌 JS 語法錯了照樣綠。
**防呆法(本次固化的驗證鏈,比 tsc 多三步)**
1. 用 node `new Function` 把 template literal **求值成真 HTML**(模擬 worker 輸出);
2. 抽出 `<script>` 內容跑 `node --check`inline JS 語法層);
3. 對 esc/mdRender/parseAtMs 這類純函式抽出來跑**行為斷言**(含 XSS escape、epoch 秒/毫秒/ISO 容錯)——
regex 跳脫錯誤只有這層抓得到(語法對但行為錯)。
腳本模式見 2026-07-04 session scratchpadcheck-html.js / check-fns.js),下次改 console 直接複刻。
**連帶誠實缺口(憑證頁)**`DELETE /credentials/:name` 仍是舊 KV 路徑(T9 範圍未動),
但目錄已改 D1(新 `GET /credentials/catalog`)——UI 若直接接 DELETE 會假綠(KV 刪了、D1 目錄還在、
Workers Secret 也還在)。正解=刪除鈕標「即將開通」等 T9,**不要接舊端點裝有效**。
同型判準:介面接動作前先問「這端點操作的儲存層,跟我列表讀的是同一層嗎」。
---
## 快速檢查清單(做新功能前)
- [ ] 這是工作流還是零件?問「有必要嗎?」