我在 Next.js (NextAuth.js) 中有一個 API,只有前端會使用。它使用 cookie 進行身份驗證。我的問題是惡意網站可以使用 CSRF 更改用戶的資料嗎?我應該實施 CSRF 令牌還是可以防止惡意網站在沒有它的情況下更改資料?
uj5u.com熱心網友回復:
如果身份驗證基于瀏覽器自動發送的請求(如 cookie),那么是的,您很可能需要針對 CSRF 的保護。
您可以自己嘗試:在一個源上設定服務器(例如 localhost:3000),在另一個源上設定攻擊者頁面(例如 localhost:8080,它與不同的域相同,由攻擊者控制)。現在登錄到您的應用程式:3000,并在您的攻擊者來源上創建一個頁面,該頁面將發布到:3000 更改資料的內容。您會看到,雖然 :8080 不會收到回應(因為相同的來源策略),但 :3000 確實會收到并處理請求。它還將接收設定為 :3000 的 cookie,無論用戶從何處發出請求。
為了緩解,您可以實作同步器令牌模式(csrf 令牌),雙重提交,或者您可以決定依賴 cookie 的 SameSite 屬性,舊瀏覽器不支持,但最近的瀏覽器支持,所以有一些風險,具體取決于您的用戶是誰。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/488261.html
