假設我們有一個由域example.com上的 nginx 提供的 SPA和一個托管在api.example.com上的 REST API 。
SPA 和 API 之間的身份驗證通過 JWT 進行。SPA 存盤在本地存盤中的短期(15 分鐘)訪問令牌和服務器在 HttpOnly cookie 上設定的長期(天)重繪 令牌。域example.com的服務器上允許 CORS 。
問題 1:我昨天和一位同事討論了這個問題,他們認為因為我的重繪 令牌駐留在 cookie 中,我需要為我的應用程式提供 CSRF 保護。我不同意重繪 令牌不能用于“訪問”任何私有資源的帳戶,并且僅在向特定端點發出GET請求期間由服務器檢查,該端點將令牌交換機制暴露給 SPA。
Q1。 這個推理正確嗎?有沒有辦法惡意利用 HttpOnly cookie 中的重繪 令牌?
問題 2:在這個問題上進一步思考,即使我們要尋求一些 CSRF 保護,如果沒有,那就安心。首先,您將如何將令牌發送給客戶端?我們不使用表單并完全在客戶端呈現 UI,因此隱藏欄位是不可能的,索引檔案由 nginx 提供,因此我們也不能在 HTML 上嵌入元標記。
Q2。有沒有辦法讓 CSRF 保護對單頁應用程式起作用?
uj5u.com熱心網友回復:
我相信將重繪 令牌保存在 cookie 中是可以的。只需確保 cookie 只能發送到負責重繪 的一個端點,并滿足此處提供的 OWASP 應用程式安全驗證標準 V3.4 中提到的其他 cookie 保護要求。
如果有人通過 CSRF 攻擊你,那么可能發生的最糟糕的事情是什么?他可能會強迫你重繪 令牌。但是令牌不會以任何方式暴露給攻擊者,因此不會發生泄漏。
如果盡管如此,您將被迫解決 CSRF 問題,請也查看一下:https ://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/489126.html
上一篇:無法在SpringBoot中從SecurityContextHolder設定登錄用戶
下一篇:Zoom和Chrome如何允許沒有com.apple.security.cs.disable-library-validation的虛擬網路攝像頭?
