修復登入頁面 CSRF 漏洞
claude-opus-4-6sess_a1b2c3d4分析 CSRF 漏洞報告,需要檢查 auth middleware 和 token 驗證邏輯
讀取 src/middleware/auth.ts
發現 CSRF token 驗證只在 POST 路由生效,PUT/DELETE 路由缺少防護
需要擴展 CSRF middleware 覆蓋所有非 GET 請求,同時確認 SameSite cookie 設定
讀取 src/config/security.ts
grep -rn 'csrf\|CSRF' src/ --include='*.ts'
找到 5 個檔案引用 CSRF:middleware/auth.ts, config/security.ts, utils/token.ts, routes/api.ts, tests/auth.test.ts
制定修復計畫:1) 擴展 middleware 2) 更新 cookie 設定 3) 補充測試案例
修改 src/middleware/auth.ts — 將 CSRF 驗證從僅 POST 擴展到 POST/PUT/PATCH/DELETE
修改 src/config/security.ts — 設定 SameSite=Strict, Secure=true, HttpOnly=true
啟動 sub-agent 撰寫測試案例:CSRF token 驗證 × 4 個 HTTP method
新增 tests/csrf.test.ts — 8 個測試案例覆蓋所有 HTTP method + edge cases
npm test -- --testPathPattern csrf
測試失敗:PATCH /api/users 路由缺少 CSRF middleware 註冊。Expected 403, received 200
PATCH 路由在 routes/api.ts 中直接定義,繞過了全域 middleware。需要修改路由註冊順序
修改 src/routes/api.ts — 將 CSRF middleware 從路由級移到 router 級
npm test -- --testPathPattern csrf
✅ 8/8 測試通過。CSRF 防護已覆蓋所有非 GET 路由
git add -A && git commit -m 'fix(security): extend CSRF protection to all non-GET routes'
修復完成。摘要:擴展 CSRF 到所有非 GET 路由、修正路由註冊順序、加強 cookie 安全設定、新增 8 個測試
✅ CSRF 漏洞修復完成! 修改了 3 個檔案,新增 1 個測試檔案: • middleware/auth.ts — CSRF 驗證擴展到 POST/PUT/PATCH/DELETE • config/security.ts — Cookie 安全設定強化 • routes/api.ts — 修正 middleware 註冊順序 • tests/csrf.test.ts — 8 個測試案例全部通過