1 回答

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