本卡屬 FR-114 資安修正(母卡 CM-2019),第 2 批「只驗登入、不檢查歸屬」卡 2-2,修 SUMMARY #5/#6/#48/#49/#50/#51(出自 M05-3/M05-4/M05-5/M05-7)。中。修法規格來自內化卡,計畫在 docs/features/FR-114-2609-security-fix-dispatch/batches/plan-b2.md「卡 2-2」段。🔴 本卡要等第 1 批合回主線+套件發版後才能開工。
問卷模組六組端點只驗證「有沒有登入」,不檢查「這個問卷是不是你能碰的專案」:填答歷史詳情(#5)、填答本體(#6)、任務問卷(#48)、填答歷史列表與選單(#49)、討論串(#50)、即時共同編輯的 SocketIO 連線(#51)。共通修法是讀取放寬到「任何專案成員」都能看,但寫入要保持較嚴格的檢查,且兩者要一起補——只補必填參數、不補歸屬比對,或反過來,都不夠。
首腦核對:
套件側:在 /Users/chouraymond/Projects/Jedicogy/module/jedi-python-package/.claude/worktrees/jedi-wt-fix-security/jedi-survey(branch fix/security-b1)改,只動自己那支套件的子目錄、只 git add 該子目錄下的檔。
跨 repo:BE 工作區 pyproject.toml 把 jedi-survey 的 pin 改成 path 形式指向上面那個套件 worktree,poetry update jedi-survey。這個 path 改動不 commit。
question_answer_history_detail_route.py:18 → service:19 #5 填答歷史詳情,補「任何專案成員可讀」
question_answer_route.py:28 → service:90 #6 填答本體,補「任何專案成員可讀」;已有正確寫入寫法在 :104/:217/:376,複製過來
task_survey_route.py:29 → service:59 #48 任務問卷(列表)
task_survey_route.py:40 → service:66 #48 任務問卷(單筆)
question_answer_history_route.py:32 → service:35 #49 填答歷史列表
question_answer_history_route.py:22 → service:42 #49 填答歷史選單
survey_discussion_route.py:25 → service:31 #50 討論串,需帶 survey_uid/task_survey_uid 判斷歸屬
fill_survey_socketio_handler.py:59 #51 on_join,SocketIO 連線起點,補歸屬檢查
fill_survey_socketio_handler.py:130 #51 同上
fill_survey_socketio_handler.py:142 #51 同上
fill_survey_socketio_handler.py:182 #51 同上
fill_survey_socketio_handler.py:203 #51 同上(5 處全部要補)