本卡屬 FR-114 資安修正(母卡 CM-2019),第 2 批「只驗登入、不檢查歸屬」卡 2-7,修 SUMMARY #63(出自 M20-3)。中。修法規格來自內化卡,計畫在 docs/features/FR-114-2609-security-fix-dispatch/batches/plan-b2.md「卡 2-7」段。🔴 本卡要等第 1 批合回主線+套件發版後才能開工。
工作項的更新與刪除已經有「操作者是不是管理者」的檢查,但都沒有反過來確認「這個工作項是不是真的屬於這個專案」——填錯或偽造 project_uid 一樣能通過檢查。讀取(GET)更嚴重,完全沒有任何守門,是本卡最主要的缺口。
首腦核對:
BE 側:在 /Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be/.claude/worktrees/wt-fix-security(branch fix/security-b1)改,不要碰主 checkout。跑服務用 PORT=8001。
api/flow_control/routes/job_route.py:82 GET,完全零守門,補上完整檢查(含歸屬反查)
app/flow_control/service/job_service.py:140 get_job(uid),目前沒有 project_uid 參數可比對,需要調整簽章或改由呼叫端提供
api/flow_control/routes/job_route.py:104 PUT
app/flow_control/service/job_service.py:266 update_job,:287 _require_manager 只驗證身分,補歸屬反查
api/flow_control/routes/job_route.py:147 DELETE
app/flow_control/service/job_service.py:211 delete_job(uid, project_uid=None),project_uid 是可選參數,補「必填且需比對」
app/flow_control/service/job_service.py:126 _require_manager,既有身分檢查
app/flow_control/service/job_service.py:217 delete_job_from_diagram——確認唯一呼叫者 workflow_xml_sync_service.py:124,屬 FR-112 範圍,本卡不動