1 回答

TA貢獻1836條經驗 獲得超5個贊
據我了解,服務器生成 CSRF 令牌是很常見的
服務器需要生成兩個CSRF令牌
然后將其與已請求的視圖(頁面)一起發送到客戶端(然后可以將令牌隱藏在 HTML 表單輸入標記中)。
一個令牌通常作為 cookie 發送,另一個令牌可以作為 HTTP 標頭發送。盡管可以通過這種方式發送,但不需要將其作為 HTML 表單輸入標記(或正文的任何其他部分)發送到 HTML 正文內。
我的問題是;在哪里安全地存儲服務器上生成的令牌?
您不必在服務器上存儲令牌。你可以,但你不需要。
原計劃是使用Redux來存儲token
Redux 存儲位于客戶端的瀏覽器內存中。理論上,一個 React 組件(從服務器響應中提取第二個 CSRF 令牌)可以臨時將令牌存儲在存儲中,以便另一個 React 組件可以從那里獲取它并在發送到服務器之前將其放入下一個請求中。
顯然 localStorage 也是一個壞主意......
是的
任何幫助、鏈接、建議、批評將不勝感激,我想學習構建考慮到安全性的應用程序
Links
With Express 使用這個中間件是很常見的。
批評
嚴格來說,這在 CSRF 相關 Q/A 的背景下是偏離主題的,但是......
UI 是用 React 構建的,運行在與服務器不同的端口上。
react-scripts
這暗示了使用which start的可能性webpack-dev-server
。它適合開發,但不適合生產中的部署。然而,這是一個單獨的主題,向 Web 客戶端提供 React 應用程序的構建工件(.html 文件、腳本包)與 CSRF 攻擊及其緩解措施無關。
我想學習構建考慮安全性的應用程序
那么您可能會考慮使用一臺網絡服務器而不是兩臺(前端為 React 應用程序提供服務,后端為 API 響應提供服務)。使用一臺服務器進行生產部署,不僅復雜性和成本更低,而且更安全,因為兩臺服務器具有更大的攻擊面,并且使用一臺服務器,您不需要通過使用 CORS 來削弱安全性。
添加回答
舉報