本卡屬 FR-114 資安修正(母卡 CM-2019),第 1 批「權限地基」卡 1-8,修 SUMMARY #40(出自 M06-4)。中。修法規格來自內化卡,計畫在 docs/features/FR-114-2609-security-fix-dispatch/batches/plan-b1.md「卡 1-8」段。
問題是什麼(白話)
流程範本驗證這支端點缺少權限檢查,且沒有限制流程圖的複雜度(分支深度、節點數),惡意或誤用的呼叫可能送出超大流程圖讓伺服器處理到卡住。
首腦核對:
- 上限已凍結(見 M06-flow-engine.md 限制段):分支深度 8、節點數 100
- 回應格式規則:超過上限時仍要回 200 加違規清單,不是 400 錯誤頁——這是既有的 UX 原則(不能用擋錯誤頁的方式擋使用者),要照舊維持
- 已查過 DEV 現有範本最大節點數是 3、出貨種子範本是 9——100 是約 10 倍安全邊界,這個「打折」要寫進 commit message 說明,不是憑空拍的數字
工作區
BE 側:在 /Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be/.claude/worktrees/wt-fix-security(branch fix/security-b1)改,不要碰主 checkout。跑服務用 PORT=8001。
在哪裡
flow_template_route.py:130-144 FlowTemplateValidateRoute.post,缺 require_capability,且沒有分支深度/節點數上限檢查
怎麼修
- ① flow_template_route.py:130-144 補上 require_capability(照本模組其他寫入端點的能力名稱慣例)
- ② 在驗證邏輯中加入分支深度上限 8、節點數上限 100 的檢查,兩個數字都是凍結值,不要自己另訂
- ③ 超過上限時,回應格式維持 200 並在違規清單中列出「超過節點數上限」這類項目,不要改成 400 錯誤——這是既有的 UX 設計原則,不能破壞
手測
- DEV:沒有對應能力的帳號呼叫驗證端點 → 期待被擋下
- DEV:正常範本(節點數在 100 以內)→ 期待驗證結果跟修改前一樣
- DEV:故意送節點數超過 100 或分支深度超過 8 的範本 → 期待回應仍是 200,違規清單裡列出對應超限項目,不是直接回 400
做完要回寫報告