docs(wiki): Mira Console 完整版收尾——mistakes #24 三層跳脫驗證法+DELETE 假綠缺口、status 更新 (Arcrun#3 console 系)
This commit is contained in:
@@ -512,6 +512,26 @@ array-of-tables(`[[x]]`)不用 inline array。改 toml 後用 `wrangler --dr
|
||||
|
||||
---
|
||||
|
||||
## 24. Worker 內嵌單檔 HTML 的三層跳脫=隱形破版源;驗證要「求值後」做(2026-07-04,Mira Console 完整版)
|
||||
|
||||
**情境**:console 頁是 TS template literal 包整份 HTML+inline JS。字面上要穿三層:
|
||||
TS template(`\\d` 才輸出 `\d`、內層禁裸 backtick/`${`)→ inline JS(regex、字串拼接)→ 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 scratchpad(check-html.js / check-fns.js),下次改 console 直接複刻。
|
||||
|
||||
**連帶誠實缺口(憑證頁)**:`DELETE /credentials/:name` 仍是舊 KV 路徑(T9 範圍未動),
|
||||
但目錄已改 D1(新 `GET /credentials/catalog`)——UI 若直接接 DELETE 會假綠(KV 刪了、D1 目錄還在、
|
||||
Workers Secret 也還在)。正解=刪除鈕標「即將開通」等 T9,**不要接舊端點裝有效**。
|
||||
同型判準:介面接動作前先問「這端點操作的儲存層,跟我列表讀的是同一層嗎」。
|
||||
|
||||
---
|
||||
|
||||
## 快速檢查清單(做新功能前)
|
||||
|
||||
- [ ] 這是工作流還是零件?問「有必要嗎?」
|
||||
|
||||
Reference in New Issue
Block a user