本卡屬 FR-114 資安修正(母卡 CM-2019),第 5 批子集 B 卡 5B-4,修 SUMMARY #85/#86/#126/#127(出自 M05-1/M05-2/M05-3/M05-4)。中。修法規格來自內化卡 CM-1990,計畫在 docs/features/FR-114-2609-security-fix-dispatch/batches/plan-b5B.md「卡 5-B4」段。

問題是什麼(白話)

#85:多人同時填問卷的即時同步那條路(不是 HTTP),把畫面送上來的名字直接寫進建立者/修改者欄位。所有 HTTP 端點都用登入憑證裡的身分,只有即時同步這一條路不是——這不是越權,但一個合法填答者可以把自己的修改署成別人的名字,事後追查「誰改了這一題」就不可靠。

#86:問卷資料夾的「修改」入口,整包請求內容原樣展開成資料物件——多塞一個「已刪除」欄位就繞過「資料夾裡還有東西就不准刪」這道守門,造出「資料夾已經刪掉、但問卷還掛在底下」的孤兒資料。

#126:問卷資料夾列表,同樣把整包請求內容展開成查詢參數——把程式內部「排除系統資料夾」的開關蓋掉,就看得到流程自動產生的內部快照資料夾(__ 開頭)以及已經刪掉的資料夾,只要登入、連權限點都沒掛。

#127:同一支資料夾列表,網址入口包了一層「不管出什麼錯都接住」,然後把錯誤訊息當成回應內容送出去——送一個型別不對的查詢條件就會把資料表名稱、欄位名稱與查詢片段吐給前端,等於把內部結構攤開。

首腦核對:

工作區

在哪裡

jedi-survey/jedi_survey/app/handler/fill_survey_socketio_handler.py:165    建立者/修改者欄位直接採用畫面送上來的名字,#85
jedi-survey/jedi_survey/app/service/survey_folder.py:81    整包請求內容原樣展開成資料物件,#86 核心
jedi-survey/jedi_survey/api/routes/survey_folder_route.py:92    源頭 @use_kwargs(..., apply=False),#86
jedi-survey/jedi_survey/api/routes/survey_folder_route.py:46    資料夾列表查詢參數展開,#126
jedi-survey/jedi_survey/api/routes/survey_folder_route.py:51    「不管出什麼錯都接住」把錯誤訊息原樣回傳,#127

怎麼修