在 .NET Core + Vue.js 專案中實作 CSRF 防護
安全性掃描丟回來一張紅單那次例行安全性掃描跑完,報告裡躺著一條 CSRF(Cross-Site Request Forgery)漏洞。專案是前後端分離:後端 .NET Core Web API,前端 Vue.js 跑在另一個來源(origin),用 Cookie 帶身分驗證。這種架構最容易踩到 CSRF,因為瀏覽器只要看到對應網域,就會自動把 Cookie 附上去,不管請求是誰發起的。 補這個洞花的時間比我預期久,主要卡在兩個地方:一是 ASP.NET Core 的 Antiforgery API 有不少網路文章寫錯,照抄根本編不過;二是 SameSite 設定跟前後端分離的架構互相打架,調了好幾次才搞懂。這篇把走過的彎路記下來,程式碼都實際跑過。 CSRF 到底在攻擊什麼CSRF 利用的是「瀏覽器會自動帶 Cookie」這件事。攻擊不需要偷到你的帳密,它借用的是你「已經登入」的狀態。 典型流程是這樣: 使用者登入了網路銀行,瀏覽器存了驗證 Cookie 同個瀏覽器分頁打開了一個惡意網站 惡意網站偷偷送一個 POST 到網路銀行的轉帳端點 瀏覽器看到目標是網路銀行,就把驗證 C...




